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"那是真的NaN,NA, -Inf和Inf值将转换为"null"在输出中。如果为false,则它们将保持为原始值。此参数的默认值为true。
如果参数的值"PrettyPrint"如果为true,则输出文本将具有缩进和换行。如果为false,则输出将被压缩并在没有空白的情况下写入。此参数的默认值为false。
编程说明:
"\n"),使用单引号字符串。"\0")在adouble中,带引号的字符串将在编码过程中删除。int8然后解码,你会得到一个double.
此表显示了从Octave数据类型到JSON数据类型的转换:
| Octave数据类型 | JSON数据类型 |
|---|---|
| logical scalar | Boolean |
| logical vector | Array of Boolean, reshaped to row vector |
| logical array | nested Array of Boolean |
| numeric scalar | Number |
| numeric vector | Array of Number, reshaped to row vector |
| numeric array | nested Array of Number |
NaN, NA, Inf, -Inf当 "ConvertInfAndNaN" = true
|
"null" |
NaN, NA, Inf, -Inf当 "ConvertInfAndNaN" = false
|
"NaN", "NaN","Infinity", "-Infinity"
|
| empty array | "[]" |
| character vector | String |
| character array | Array of String |
| empty character array | |
| cell scalar | Array |
| cell vector | Array, reshaped to row vector |
| cell array | Array, flattened to row vector |
| struct scalar | Object |
| struct vector | Array of Object, reshaped to row vector |
| struct array | nested Array of Object |
| classdef object | Object |
示例:
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数据类型 |
|---|---|
| Boolean | scalar logical |
| Number | scalar double |
| String | vector of characters |
| Object | 标量结构体(从于matlab_lang_makeValidName
|
| null, inside a numeric array | NaN |
| null, inside a non-numeric array | 空双数组[]
|
| Array, of different data types | cell array |
| Array, of Booleans | logical array |
| Array, of Numbers | double array |
| Array, of Strings | 字符向量的元胞数组(cellstr) |
| Array of Objects, same field names | struct array |
| Array of Objects, different field names | cell array of scalar structs |
示例:
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
版权所有 © 2024-2025 Octave中文网
ICP备案/许可证号:黑ICP备2024030411号-2