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