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数据类型 |
|---|---|
| 逻辑标量 | 布尔值 |
| 逻辑向量 | 布尔数组,重塑为行向量 |
| 逻辑数组 | 嵌套布尔数组 |
| 数字标量 | 数字 |
| 数字向量 | 数字数组,重塑为行向量 |
| 数字数组 | 嵌套的数字数组 |
NaN, NA, Inf, -Inf什么时候 ConvertInfAndNaN”=true
|
null |
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 3jsondecode('[“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字符串=hijsondecode('{“nu#m#ber”:7,“s#tr#ing”:“hi”}',…'makeValidName',false)⇒ 包含字段的标量结构体:nu#m#ber=7 s#tr#ing=hijsondecode('{“1”:“one”,“2”:“two”}','前缀','m_')⇒ 包含字段的标量结构体:m_1=一m_2=两版权所有 © 2024-2025 Octave中文网
ICP备案/许可证号:黑ICP备2024030411号-2