jsonencode

Создайте JSON-форматированный-текст из структурированных данных MATLAB

Синтаксис

text = jsonencode(data)
text = jsonencode(data,'ConvertInfAndNaN',TF)

Описание

пример

text = jsonencode(data) кодирует data и возвращает вектор символа в формате JSON.

text = jsonencode(data,'ConvertInfAndNaN',TF) настраивает кодирование специальных значений с плавающей точкой NaN, Inf,-Inf.

Примеры

свернуть все

value = {'one'; 'two'; 'three'};
jsonencode(value)
ans = 
'["one","two","three"]'

Входные параметры

свернуть все

Данные MATLAB, заданные как любой поддерживаемый тип данных MATLAB. Для получения дополнительной информации смотрите Ограничения.

Примеры. Идентификаторы = [116, 943, 234, 38793]

Настройте кодирование специальных значений с плавающей точкой NaN, Inf и-Inf, заданный как true или false. Значение true кодирует значения с плавающей точкой как null. Значение false кодирует значения как литеральный NaN, Infinity или -Infinity.

Пример: jsonencode (-Inf, 'ConvertInfAndNaN', ложь)

Выходные аргументы

свернуть все

JSON-форматированный-текст, возвращенный как вектор символа.

Ограничения

  • 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]))
'[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"]'

stringArray

Вложенный массив строк

jsonencode(["AC","EG";"BD","FH"])
'[["AC","EG"],["BD","FH"]]'

пустой символьный вектор

Строка

jsonencode('')
'""'

<missing>

пустой указатель

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]'

скаляр структуры
объектный скаляр

Объект
Объект (Общественные собственности, закодированные как пары name-value.)

jsonencode(struct('a','value'))
'{"a":"value"}'

вектор структуры
объектный вектор

Массив объектов

jsonencode(struct('a',{true,true,false}))
'[{"a":true},{"a":true},{"a":false}]'

массив структур
objectArray

Вложенный массив объектов

  

скаляр datetime

Строка (метод string раньше преобразовывал дату и время в формат строки.)

jsonencode(datetime('tomorrow'))
'"04-Nov-2016"'

вектор datetime

Массив строк

  

массив datetime

Вложенный массив строк

DT = datetime({'8 April 2015','9 May 2015'}, ...
    'InputFormat','d MMMM yyyy');
jsonencode(DT)
'["08-Apr-2015","09-May-2015"]'

категориальный скаляр

Строка (метод string раньше создавал формат строки.)

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
Inf

пустой указатель

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]}}]}'

Смотрите также

|

Введенный в R2017b

Была ли эта тема полезной?