Spec-Zone.ru › Octave 9

5.4.3 Кодирование и декодирование данных JSON

JavaScript Object Notation, сокращённо JSON, — очень распространённый структурированный формат данных, удобный для чтения человеком. GNU Octave поддерживает кодирование и декодирование данных в этом формате с помощью следующих двух функций.

: JSON_txt = jsonencode (object)
: JSON_txt = jsonencode (…, "ConvertInfAndNaN", TF)
: JSON_txt = jsonencode (…, "PrettyPrint", TF)

Кодирует типы данных Octave в текст JSON.

Входной параметр object — это переменная Octave, которую нужно закодировать.

Выходной параметр JSON_txt — это текст JSON, содержащий результат кодирования object.

Если значение параметра "ConvertInfAndNaN" равно true, то значения NaN, NA, -Inf и Inf будут преобразованы в "null" в выходных данных. Если оно равно false, эти значения останутся без изменений. Значение этого параметра по умолчанию — true.

Если значение параметра "PrettyPrint" равно true, выходной текст будет содержать отступы и переводы строк. Если оно равно false, выходные данные будут компактными и без пробелов. Значение этого параметра по умолчанию — false.

Примечания по программированию:

  • Комплексные числа не поддерживаются.
  • Объекты classdef сначала преобразуются в структуры, а затем кодируются.
  • Чтобы сохранить escape-последовательности (например, "\n"), используйте строки в одинарных кавычках.
  • Все символы после нулевого символа ("\0") в строке в двойных кавычках будут отброшены при кодировании.
  • Не гарантируется, что кодирование и декодирование массива сохранят его размерности. В частности, векторы-строки будут преобразованы в векторы-столбцы.
  • Не гарантируется, что кодирование и декодирование сохранят тип данных Octave, поскольку JSON поддерживает меньше типов данных, чем Octave. Например, если закодировать int8, а затем декодировать его, результатом будет double.

В этой таблице показаны преобразования типов данных Octave в типы данных JSON:

Тип данных Octave Тип данных JSON
логический скаляр логическое значение
логический вектор массив логических значений, преобразованный в вектор-строку
логический массив вложенный массив логических значений
числовой скаляр число
числовой вектор массив чисел, преобразованный в вектор-строку
числовой массив вложенный массив чисел
NaN, NA, Inf, -Inf
when "ConvertInfAndNaN" = true
"null"
NaN, NA, Inf, -Inf
when "ConvertInfAndNaN" = false
"NaN", "NaN", "Infinity", "-Infinity"
пустой массив "[]"
вектор символов строка
массив символов массив строк
пустой массив символов ""
скалярная ячейка массив
вектор ячеек массив, преобразованный в вектор-строку
массив ячеек массив, развёрнутый в вектор-строку
скалярная структура объект
вектор структур массив объектов, преобразованный в вектор-строку
массив структур вложенный массив объектов
объект classdef объект

Примеры:

jsonencode ([1, NaN; 3, 4])
⇒ [[1,null],[3,4]]


jsonencode ([1, NaN; 3, 4], "ConvertInfAndNaN", false)
⇒ [[1,NaN],[3,4]]


## Escape characters inside a single-quoted string
jsonencode ('\0\a\b\t\n\v\f\r')
⇒ "\\0\\a\\b\\t\\n\\v\\f\\r"


## Escape characters inside a double-quoted string
jsonencode ("\a\b\t\n\v\f\r")
⇒ "\u0007\b\t\n\u000B\f\r"


jsonencode ([true; false], "PrettyPrint", true)
⇒ ans = [
     true,
     false
   ]


jsonencode (['foo', 'bar'; 'foo', 'bar'])
⇒ ["foobar","foobar"]


jsonencode (struct ('a', Inf, 'b', [], 'c', struct ()))
⇒ {"a":null,"b":[],"c":{}}


jsonencode (struct ('structarray', struct ('a', {1; 3}, 'b', {2; 4})))
⇒ {"structarray":[{"a":1,"b":2},{"a":3,"b":4}]}


jsonencode ({'foo'; 'bar'; {'foo'; 'bar'}})
⇒ ["foo","bar",["foo","bar"]]


jsonencode (containers.Map({'foo'; 'bar'; 'baz'}, [1, 2, 3]))
⇒ {"bar":2,"baz":3,"foo":1}

См. также: jsondecode.

: object = jsondecode (JSON_txt)
: object = jsondecode (…, "ReplacementStyle", rs)
: object = jsondecode (…, "Prefix", pfx)
: object = jsondecode (…, "makeValidName", TF)

Декодирует текст в формате JSON.

Входной параметр JSON_txt — это строка, содержащая текст JSON.

Выходной параметр object — это объект Octave, содержащий результат декодирования JSON_txt.

Дополнительные сведения о параметрах "ReplacementStyle" и "Prefix" см. в разделе matlab.lang.makeValidName.

Если значение параметра "makeValidName" равно false, имена не будут изменяться функцией matlab.lang.makeValidName, а параметры "ReplacementStyle" и "Prefix" будут игнорироваться.

ПРИМЕЧАНИЕ: Декодирование и кодирование текста JSON не гарантирует восстановления исходного текста, поскольку некоторые имена могут быть изменены функцией matlab.lang.makeValidName.

В этой таблице показаны преобразования типов данных JSON в типы данных Octave:

Тип данных JSON Тип данных Octave
логическое значение логический скаляр
число скаляр типа double
строка вектор символов
объект скалярная структура (имена полей структуры могут отличаться от ключей объекта JSON из-за matlab_lang_makeValidName
null внутри числового массива NaN
null внутри нечислового массива пустой массив типа double []
массив разных типов данных массив ячеек
массив логических значений логический массив
массив чисел массив типа double
массив строк массив ячеек с векторами символов (cellstr)
массив объектов с одинаковыми именами полей массив структур
массив объектов с разными именами полей массив ячеек со скалярными структурами

Примеры:

jsondecode ('[1, 2, null, 3]')
    ⇒ ans =

      1
      2
    NaN
      3


jsondecode ('["foo", "bar", ["foo", "bar"]]')
    ⇒ ans =
       {
         [1,1] = foo
         [2,1] = bar
         [3,1] =
         {
           [1,1] = foo
           [2,1] = bar
         }

       }


jsondecode ('{"nu#m#ber": 7, "s#tr#ing": "hi"}', ...
            'ReplacementStyle', 'delete')
    ⇒ scalar structure containing the fields:

         number = 7
         string = hi


jsondecode ('{"nu#m#ber": 7, "s#tr#ing": "hi"}', ...
            'makeValidName', false)
    ⇒ scalar structure containing the fields:

         nu#m#ber = 7
         s#tr#ing = hi


jsondecode ('{"1": "one", "2": "two"}', 'Prefix', 'm_')
    ⇒ scalar structure containing the fields:

         m_1 = one
         m_2 = two

См. также: jsonencode, matlab.lang.makeValidName.

© 1996–2026 The Octave Project Developers
Permission is granted to make and distribute verbatim copies of this manual provided the copyright notice and this permission notice are preserved on all copies.
Permission is granted to copy and distribute modified versions of this manual under the conditions for verbatim copying, provided that the entire resulting derived work is distributed under the terms of a permission notice identical to this one.Permission is granted to copy and distribute translations of this manual into another language, under the above conditions for modified versions.
https://docs.octave.org/v9.4.0/JSON-data-encoding_002fdecoding.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API