Эта тема описывает представление JSON типов данных MATLAB®. Объектная нотация JavaScript или JSON являются основанным на тексте, языком программирования независимый формат обмена данными. Стандарт JSON задан в RFC 7159 и может представлять четыре типов примитивов и два структурированных типа. Поскольку JSON является независимым языком программирования, можно представлять типы данных MATLAB в JSON. Для больше о типах данных MATLAB, смотрите Основной принцип Классы MATLAB (MATLAB).
Используя представление JSON типов данных MATLAB, вы можете:
Представляйте данные или переменные в клиентском коде, чтобы служить входными параметрами к функции MATLAB, развернутой на сервере.
Проанализируйте ответ от экземпляра MATLAB Production Server™ для дальнейшей манипуляции в клиентском коде.
Ответ с сервера содержит array
JSON, где каждый элемент массива соответствует выводу развернутой функции MATLAB, представленной как object
JSON.
Можно представлять типы данных MATLAB в JSON использование двух форматов: маленький и большой.
Маленький формат обеспечивает упрощенное представление типов данных MATLAB в JSON. Существует взаимно-однозначное отображение между типами данных MATLAB и их соответствующим представлением JSON. Типы данных MATLAB, которые являются скаляром и типа double
, logical
и char
, могут быть представлены с помощью маленького обозначения. Многомерные массивы MATLAB типа double
, logical
и struct
могут также быть представлены с помощью маленького обозначения.
Большой формат обеспечивает типичное представление типов данных MATLAB в JSON. Большой формат использует обозначение object
JSON, состоящее из пар "имя-значение" свойства, чтобы представлять данные. Можно использовать большое обозначение для любого типа данных MATLAB, который не может быть представлен в маленьком обозначении. Ответ от MATLAB Production Server всегда использует большое обозначение.
object
JSON содержит следующие пары "имя-значение" свойства:
PropertyName | Значение свойства |
---|---|
"mwtype" | JSON string , представляющий тип данных. Значение свойства задано в "" . "double" | "single" "int8" | "uint8" | "int16" | "uint16" "int32" | "uint32" | "int64" | "uint64" "logical" | "char" | "struct" | "cell" |
"mwsize" | array JSON, представляющий размерности данных. Задайте значение свойства путем включения размерностей как списка, разделенного запятыми в [] . |
"mwdata" | JSON array , представляющий фактические данные. Значение свойства задано путем включения данных как списка, разделенного запятыми в [] . |
"mwcomplex" (при представлении комплексных чисел.) | Установите на true JSON. |
MATLAB Compiler SDK™ имеет четыре служебных функции, которые делают данные о преобразовании между MATLAB и JSON более простыми. Они:
FunctionName | Цель |
---|---|
mps.json.encode (MATLAB Compiler SDK) | Преобразуйте данные MATLAB в текст JSON с помощью MATLAB Production Server схема JSON |
mps.json.decode (MATLAB Compiler SDK) | Преобразуйте вектор символов или строку в MATLAB Production Server схема JSON к данным MATLAB |
mps.json.encoderequest (MATLAB Compiler SDK) | Преобразуйте данные MATLAB в запросе к серверу к тексту JSON с помощью MATLAB Production Server схема JSON |
mps.json.decoderesponse (MATLAB Compiler SDK) | Преобразуйте текст JSON от ответа сервера до данных MATLAB |
Представление JSON типов данных MATLAB
double, single
Тип данных MATLAB | JSON маленькое обозначение | JSON большое обозначение |
---|---|---|
double | number | { "mwtype": "double", "mwsize": [1,1], "mwdata": [number] } |
single | Никакое маленькое представление. | { "mwtype": "single", "mwsize": [1,1], "mwdata": [number] } |
Пример: | ||
double(12.905) | 12.905 | { "mwtype": "double", "mwsize": [1,1], "mwdata": [12.905] } |
single(20.15) | Никакое маленькое представление. | { "mwtype": "single", "mwsize": [1,1], "mwdata": [20.15] } |
42 | 42 | { "mwtype": "double", "mwsize": [1,1], "mwdata": [42] } |
NaN, Inf, -Inf
NaN
, Inf
, -Inf
является числовыми типами, чьим базовым классом MATLAB может быть или double
или single
только. NaN
, Inf
, -Inf
не может быть представлен как целочисленный тип в MATLAB.
Тип данных MATLAB | JSON маленькое обозначение | JSON большое обозначение |
---|---|---|
NaN | {"mwdata":"NaN"} | { "mwtype": "double", "mwsize": [1,1], "mwdata": ["NaN"] } { "mwtype": "double", "mwsize": [1,1], "mwdata": [{"mwdata":"NaN"}] } |
Inf | {"mwdata":"Inf"} | { "mwtype": "double", "mwsize": [1,1], "mwdata": ["Inf"] } { "mwtype": "double", "mwsize": [1,1], "mwdata": [{"mwdata":"Inf"}] } |
-Inf | {"mwdata":"-Inf"} | { "mwtype": "double", "mwsize": [1,1], "mwdata": ["-Inf"] } { "mwtype": "double", "mwsize": [1,1], "mwdata": [{"mwdata":"-Inf"}] } |
[] пустой double | [] | { "mwtype": "double", "mwsize": [0,0], "mwdata": [ ] } |
Целочисленные типы из MATLAB не могут быть представлены с помощью JSON маленькое обозначение.
Тип данных MATLAB | JSON большое обозначение |
---|---|
| { "mwtype": "int8" | "uint8" | "int16" | "uint16" | "int32" | "uint32" | "int64" | "uint64" , "mwsize": [1,1], "mwdata": [number] } |
Пример: | |
int8(23) | { "mwtype": "int8", "mwsize": [1,1], "mwdata": [23] } |
uint8(27) | { "mwtype": "uint8", "mwsize": [1,1], "mwdata": [27]} |
Комплексные числа из MATLAB не могут быть представлены с помощью JSON маленькое обозначение.
При представлении комплексных чисел из MATLAB в JSON:
Свойство под названием mwcomplex
добавляется к object
JSON, и это - значение свойства, установлен в true
.
Значения свойств для свойства mwdata
содержат действительные и мнимые части, представленные бок о бок.
Тип данных MATLAB | JSON большое обозначение |
---|---|
a + bi | { "mwtype": "double", "mwsize": [1,1], "mwcomplex": true, "mwdata": [a b] } |
Пример: | |
3 + 4i | { "mwtype": "double", "mwsize": [1,1], "mwcomplex": true, "mwdata": [3,4] } |
Тип данных MATLAB | JSON маленькое обозначение | JSON большое обозначение |
---|---|---|
char | string | { "mwtype": "char", "mwsize": [1,1], "mwdata": [string] } |
Пример: | ||
'a' | "a" | { "mwtype": "char", "mwsize": [1,1], "mwdata": ["a"] } |
'hey, jude' | "hey, jude" | { "mwtype": "char", "mwsize": [1,9], "mwdata": ["hey, jude"] } |
Тип данных MATLAB | JSON маленькое обозначение | JSON большое обозначение |
---|---|---|
logical | true | false | { "mwtype": "logical", "mwsize": [1,1], "mwdata": [true | false] } |
Пример: | ||
logical(1) или true | true | { "mwtype": "logical", "mwsize": [1,1], "mwdata": [true] } |
logical(0) или false | false | { "mwtype": "logical", "mwsize": [1,1], "mwdata": [false] } |
Тип данных MATLAB | JSON большое обозначение |
---|---|
cell | { "mwtype": "cell", "mwsize": [<cell dimensions>], "mwdata": [<cell data>] } |
Пример: | |
{'Primes', [10 23 199],{false,true,'maybe'}} | { "mwtype": "cell", "mwsize": [1,3], "mwdata": ["Primes", { "mwtype": "double", "mwsize": [1,3], "mwdata": [10,23,199] }, { "mwtype": "cell", "mwsize": [1,3], "mwdata": [false, true,"maybe"] } ] } |
Тип данных MATLAB | JSON маленькое обозначение | JSON большое обозначение |
---|---|---|
struct | { "mwtype": "struct", "mwsize": [<struct dimensions>], "mwdata": [<struct data>] } | |
Пример: | ||
struct('name', 'John Smith', 'age', 15) | { "name" : "John Smith", "age" : 15 } | { "mwtype": "struct", "mwsize": [1,1], "mwdata": { "age": [ { "mwdata": [15], "mwsize": [1,1], "mwtype": "double" } ], "name": [ { "mwdata": ["John Smith"], "mwsize": [1,10], "mwtype": "char" } ] } } |
x = struct('Name',{{'Casper','Ghost'}},... 'Age',{[14,17,18]},... 'Date', {736676}); | Никакое маленькое представление. | { "mwtype":"struct", "mwsize":[1,1], "mwdata":{ "Name": [{"mwdata": {'Casper','Ghost'}, "mwsize":[1,2], "mwtype":"string"}], "Age": [{"mwdata":[14,17,18], "mwsize":[1,3], "mwtype":"double"}], "Date": [{"mwdata":[736676], "mwsize":[1,1], "mwtype":"double"}]} } |
[]
Пустые массивы []
не могут иметь типа struct
.
Тип данных MATLAB | JSON маленькое обозначение | JSON большое обозначение |
---|---|---|
[] | [] | { "mwtype": "double" | "single" "int8" | "uint8" | "int16" | "uint16" "int32" | "uint32" | "int64" | "uint64" "logical" | "char" | "cell" , "mwsize": [0,0], "mwdata": [ ] } |
Большинство многомерных массивов из MATLAB не может быть представлено с помощью JSON маленькое обозначение. Исключения: double
, logical
и struct
. Задайте все данные из многомерных массивов в порядке развертывания по столбцам в свойстве mwdata
object
JSON. Это упорядоченное расположение соответствует размещению памяти по умолчанию в MATLAB.
double
, single
, NaN
, Inf
, -Inf
, Целые числаВ представлении JSON многомерных числовых массивов:
Свойство mwtype
может принять любое из следующих значений:
"double" | "single" | "int8" | "uint8" | "int16" | "uint16" | "int32" | "uint32" | "int64" | "uint64'
Свойство mwsize
задано путем включения размерностей как списка, разделенного запятыми в []
.
Тип данных MATLAB | JSON маленькое обозначение | JSON большое обозначение |
---|---|---|
[1,2,3;... 4,5,6] | [[1,2,3],[4,5,6]] | { "mwtype": "double", "mwsize": [2,3], "mwdata": [1,4,2,5,3,6] } |
[1, NaN, -Inf;... 2, 105, Inf] | [[1,{"mwdata": "NaN"},{"mwdata": "-Inf"}],[2,105,{"mwdata": "Inf"}]] | { "mwtype": "double", "mwsize": [2,3], "mwdata": [1, 2, "NaN", 105, "-Inf", "Inf"] } |
[ 1 2; 4 5; 7 8 ] | [[1, 2], [4, 5], [7, 8]] | { "mwtype": "double", "mwsize": [3,2], "mwdata": [1,4,7,2,5,8] } |
a(:,:,1) = 1 2 3 4 5 6 a(:,:,2) = 7 8 9 10 11 12 | [[[1,7],[2,8]],[[3,9],[4,10]],[[5,11],[6,12]]] | { "mwtype": "double", "mwsize": [3,2,2], "mwdata": [1,3,5,2,4,6,7,9,11,8,10,12] } |
Ниже пример чтения и записи многомерных массивов в порядке развертывания по столбцам в JavaScript®. Пример использует файл JavaScript sub2ind.js
, чтобы преобразовать индексы в линейные индексы.
Код:
Тип данных MATLAB | JSON большое обозначение |
---|---|
[1 - 2i;... 3 + 7i] | { "mwtype": "double", "mwsize": [2,1], "mwcomplex": true, "mwdata": [1, -2, 3, 7] } |
В представлении JSON многомерных символьных массивов:
Свойство mwtype
должно иметь значение char
.
Свойство mwdata
должно быть массивом strings
JSON.
Тип данных MATLAB | JSON большое обозначение |
---|---|
['boston';... '123456'] | { "mwtype": "char", "mwsize": [3,4], "mwdata": ["b1o2s3t4o5n6"] } |
В представлении JSON многомерных логических массивов:
Свойство mwtype
должно иметь значение logical
.
Свойство mwdata
должно содержать только JSON значения true|false
.
Тип данных MATLAB | JSON маленькое обозначение | JSON большое обозначение |
---|---|---|
[true,false;... true,false;... true,false] | [[[true,false],[true,false],[true,false]]] | { "mwtype": "logical", "mwsize": [3,2], "mwdata": [true,true,true,false,false,false] } |
В представлении JSON многомерных массивов ячеек:
Свойство mwtype
должно иметь значение cell
.
Свойством mwdata
должен быть array
JSON, который содержит значения ячеек в их представлении JSON.
Тип данных MATLAB | JSON большое обозначение |
---|---|
{ 'hercule', 18540, [33 1 50];... {'agatha',1920,true}, false, 1950 } | { "mwtype": "cell", "mwsize": [2,3], "mwdata": ["hercule", {"mwtype": "cell", "mwsize": [1,3], "mwdata": ["agatha", 1920, true] }, 18540, false, {"mwtype": "double", "mwsize": [1,3], "mwdata": [33,1,50] },1950 ] } |
В представлении JSON массивов многомерной структуры:
mwdata
является object
JSON, содержащий пары "имя-значение" свойства.
Имя в каждой паре "имя-значение" свойства совпадает с полем в массиве структур.
Значением в каждой паре "имя-значение" свойства является array
JSON, содержащий значения для того поля для каждого элемента в массиве структур. Элементы array
JSON должны быть в порядке развертывания по столбцам.
Тип данных MATLAB | JSON большое обозначение |
---|---|
struct( 'Name',{'Casper','Ghost';... 'Genie' ,'Wolf'},... 'Ages',{14,17;... 20,23} ) | { "mwtype": "struct", "mwsize": [2,2], "mwdata": {"Name": ["Casper", "Genie", "Ghost" , "Wolf"], "Ages": [14,20, 17,23] } } |