Создайте JSON-форматированный-текст из структурированных данных MATLAB
jsonencode
не поддерживает комплексные числа, разреженные массивы или перечисления MATLAB. Объектам нужно было закодировать публичные свойства как пары "имя-значение" с get
методы заданы на свойствах объектов.
jsonencode
не поддерживает рекурсивные структуры, такие как графические объекты, которые содержат ссылки на родительские и дочерние объекты.
Если вы будете кодировать, то будете декодировать значение, MATLAB не гарантирует, что тип данных сохраняется. JSON поддерживает меньше типов данных, чем MATLAB, который приводит к потере информации о типе. Например, данные JSON не различают double
и int32
. Если вы кодируете int32
значение и затем вызывает jsondecode
, декодируемое значение является типом double
.
MATLAB не гарантирует, что форма массива сохраняется. Например, числовой вектор 1 на n закодирован как массив. Если вы вызываете jsondecode
, затем MATLAB декодирует массив как вектор N-1.
Сохранить символ ESC новой строки \n
, используйте newline
функция.
jsonencode(['one' newline 'two'])
ans = '"one\ntwo"'
Сохранить другой \
символы ESC, считайте вызов sprintf
на входе. Протестируйте свой вход, чтобы видеть если sprintf
создает желаемый результат.
jsonencode(sprintf('AB\tCD'))
ans = '"AB\tCD"'
Если вход содержит символ двойной кавычки "
, затем функция вставляет \
символ ESC.
jsonencode('one"two')
ans = '"one\"two"'
JSON поддерживает меньше типов данных, чем MATLAB. jsonencode
преобразует типы данных MATLAB в типы данных JSON, перечисленные здесь.
Тип данных MATLAB | Тип данных JSON | Пример | Вывод |
---|---|---|---|
массив, пустой | Массив, пустой | jsonencode([]) jsonencode(string.empty) | '[]' |
логический скаляр | Булевская переменная | jsonencode(true) | 'true' |
логический вектор | Массив булевской переменной | jsonencode([true,false,false]) | '[true,false,false]' |
логический массив | Вложенный массив булевской переменной | jsonencode(logical([0,1,0;1,1,0])) | ans = '[[false,true,false],[true,true,false]]' |
символьный вектор | Строка | jsonencode('This is a char.')
| '"This is a char."' |
массив символов | Массив строк | jsonencode(['AC';'EG']) | '["AC","EG"]' |
скаляр строки | Строка | jsonencode("This is a string.")
| '"This is a string."' |
вектор строки | Массив строк | jsonencode(["AC";"EG"]) | '["AC","EG"]' |
массив строк | Вложенный массив строк | jsonencode(["AC","EG";"BD","FH"]) | '[["AC","EG"],["BD","FH"]]' |
пустой символьный вектор | Строка | jsonencode('')
| '""' |
| пустой указатель | jsonencode(string(nan)) | 'null' |
числовой скаляр | Номер | jsonencode(2.5) | '2.5' |
числовой вектор | Массив чисел | jsonencode(1:3) | '[1,2,3]' |
числовой массив | Вложенный массив чисел | jsonencode(eye(2)) | '[[1,0],[0,1]]' |
комплексные числа | Не поддерживаемый | ||
таблица | Массив объектов | Name = {'Jones';'Brown'}; Age = [40;49]; jsonencode(table(Name,Age)) | '[{"Name":"Jones","Age":40},{"Name":"Brown","Age":49}]' |
скаляр ячейки | Массив 1 элемента |
jsonencode({5}) |
'[5]' |
вектор ячейки | Массив |
jsonencode({'a',true,[2;3]})
|
'["a",true,[2,3]]' |
cellArray | Массив сглажен к одной размерности | jsonencode({1 2;3 4}) | '[1,3,2,4]' |
скаляр структуры | Объект | jsonencode(struct('a','value')) | '{"a":"value"}' |
вектор структуры | Массив объектов | jsonencode(struct('a',{true,true,false}))
| '[{"a":true},{"a":true},{"a":false}]' |
массив структур | Вложенный массив объектов | ||
скаляр datetime | Строка ( | jsonencode(datetime('tomorrow'))
| '"04-Nov-2016"' |
вектор datetime | Массив строк |
DT = datetime({'8 April 2015','9 May 2015'}, ... 'InputFormat','d MMMM yyyy'); jsonencode(DT) |
'["08-Apr-2015","09-May-2015"]' |
массив datetime | Вложенный массив строк |
DT = datetime(... [{'April 2015','May 2015'};{'June 2015','July 2015'}], ... 'InputFormat','MMMM yyyy'); jsonencode(DT) |
ans = '[["01-Apr-2015","01-May-2015"], ["01-Jun-2015","01-Jul-2015"]]' |
категориальный скаляр | Строка ( |
jsonencode(categorical({'r'})) |
ans = '"r"' |
категориальный вектор | Массив строк |
jsonencode(categorical({'r';'g';'b'})) |
'["r","g","b"]' |
категориальный массив | Вложенный массив строк |
jsonencode(categorical( ... {'r' 'b' 'g'; ... 'g' 'r' 'b'; ... 'b' 'r' 'g'})) |
'[["r","b","g"],["g","r","b"],["b","r","g"]]' |
containers.Map | Объект | jsonencode(containers.Map( ... {'Jan','Feb','Mar'}, ... [327,368,197])) | '{"Feb":368,"Jan":327,"Mar":197}' |
NaN |
пустой указатель |
jsonencode([1,2,NaN,3,Inf]) |
'[1,2,null,3,null]' |
Чтобы передать скалярный MATLAB возражают как скалярный массив JSON (заключенный в []
символы), преобразуйте объект с помощью оператора конструкции массива ячеек {}
. Например, следующий код преобразует значение features
поле в скалярный массив JSON.
S = struct("features", struct("type", "Feature", "geometry",... struct("type", "point", "coordinates", [-105, 40]))); S.features = {S.features}; s = jsonencode(S)
s = '{"features":[{"type":"Feature","geometry":{"type":"point","coordinates":[-105,40]}}]}'