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
值将转换为无效的
在输出中。如果为false,则它们将保持为原始值。此参数的默认值为true。
如果参数的值PrettyPrint
如果为true,则输出文本将具有缩进和换行。如果为false,则输出将被压缩并在没有空白的情况下写入。此参数的默认值为false。
编程说明:
n
),使用单引号字符串。\0
)在adouble中,带引号的字符串将在编码过程中删除。int8
然后解码,你会得到一个double
.
此表显示了从Octave数据类型到JSON数据类型的转换:
Octave数据类型 | JSON数据类型 |
---|---|
逻辑标量 | 布尔值 |
逻辑向量 | 布尔数组,重塑为行向量 |
逻辑数组 | 嵌套布尔数组 |
数字标量 | 数字 |
数字向量 | 数字数组,重塑为行向量 |
数字数组 | 嵌套的数字数组 |
NaN , NA , Inf , -Inf 什么时候 ConvertInfAndNaN”=true
|
无效的 |
NaN , NA , Inf , -Inf 什么时候 ConvertInfAndNaN”=false
|
NaN , NaN ,无穷 , 无穷
|
空数组 | [] |
字符向量 | 一串 |
字符数组 | 字符串数组 |
空字符数组 |
|
数组标量 | 数组 |
元胞载体 | 数组,重塑为行向量 |
元胞数组 | 数组,展平为行向量 |
结构体标量 | 对象 |
结构体向量 | 对象数组,重塑为行向量 |
结构体数组 | 嵌套的对象数组 |
classdef对象 | 对象 |
示例:
jsonencode([1,NaN;3,4])⇒ [[1,空],[3,4]]
jsonencode([1,NaN;3,4],“ConvertInfAndNaN”,false)⇒ [[1,NaN],[3,4]]
##单引号字符串中的转义符sonencode('\0\a\b\t\tn\v\f\r')⇒ “\\0\\a\\b\\t\\n\\v\\f\\r
##双引号字符串中的转义符sonencode(“\a\b\tn\v\f\r”)⇒ “\u0007\b\t\t \u000B\f\r
jsonencode([true;false],“PrettyPrint”,true)⇒ ans=[真,假]
jsonencode(['fo','bar';'foo','bal'])⇒ [“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({'fo';'bar';{'for';'bar'}})⇒ [“foo”,“bar”,[“foo”,“bar”]]
jsonencode(containers.Map({'fo';'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.
有关参数的更多信息替换样式
和前缀
详见matlab.lang.makeValidName
.
如果参数的值makeValidName
为false,则名称将不会被更改matlab.lang.makeValidName
和替换样式
和前缀
参数将被忽略。
注意:解码和编码JSON文本不能保证再现原始文本,因为某些名称可能会被更改matlab.lang.makeValidName
.
此表显示了从JSON数据类型到Octave数据类型的转换:
JSON数据类型 | Octave数据类型 |
---|---|
布尔值 | 标量逻辑 |
数字 | 标量二重 |
一串 | 字符向量 |
对象 | 标量结构体(从于matlab_lang_makeValidName
|
null,在数字数组内 | NaN |
null,在非数字数组内 | 空双数组[]
|
数组,不同数据类型 | 元胞数组 |
数组,布尔值 | 逻辑数组 |
数组,个数 | 双数组 |
数组,字符串 | 字符向量的元胞数组(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]={[11,1]=foo<2,1]=bar}}
jsondecode('{“nu#m#ber”:7,“s#tr#ing”:“hi”}',…'ReplacementStyle','delete')⇒ 包含字段的标量结构体:数字=7字符串=hi
jsondecode('{“nu#m#ber”:7,“s#tr#ing”:“hi”}',…'makeValidName',false)⇒ 包含字段的标量结构体:nu#m#ber=7 s#tr#ing=hi
jsondecode('{“1”:“one”,“2”:“two”}','前缀','m_')⇒ 包含字段的标量结构体:m_1=一m_2=两
版权所有 © 2024 Octave中文网
ICP备案/许可证号:黑ICP备2024030411号