Создайте JSON-форматированный-текст из структурированных данных MATLAB
txt = jsonencode( кодирует data,Name,Value)data использование одного или нескольких аргументов пары "имя-значение".
jsonencode не поддерживает комплексные числа или разреженные массивы. Объектам нужно было закодировать публичные свойства как пары "имя-значение" с get методы заданы на свойствах объектов. jsonencode не поддерживает скрытые свойства.
jsonencode не поддерживает рекурсивные структуры, такие как графические объекты, которые содержат ссылки на родительские и дочерние объекты.
Если вы будете кодировать, то будете декодировать значение, MATLAB не гарантирует, что тип данных сохраняется. JSON поддерживает меньше типов данных, чем MATLAB, который приводит к потере информации о типе. Например, данные JSON не различают double и int32. Если вы кодируете int32 значение и затем вызывает jsondecode, декодируемое значение является типом double.
MATLAB не гарантирует, что форма массива сохраняется. Например, числовой вектор 1 на n закодирован как массив. Если вы вызываете jsondecode, затем MATLAB декодирует массив как N-by-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) | '[]' |
логический скаляр | Boolean | jsonencode(true) | 'true' |
логический вектор | Массив boolean | jsonencode([true,false,false]) | '[true,false,false]' |
логический массив | Вложенный массив boolean | jsonencode(logical([0,1,0;1,1,0])) | '[[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) |
'[["01-Apr-2015","01-May-2015"], ["01-Jun-2015","01-Jul-2015"]]' |
категориальный скаляр | Строка ( |
jsonencode(categorical({'r'})) |
'"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]' |
перечисление | Строка |
jsonencode(matlab.lang.OnOffSwitchState.on) |
'"on"' |
Передать скалярный объект 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]}}]}'