JSONParsedState
如果 JSON 未解析,则返回 0,如有解析但无效,则返回 -1,如有解析且有效,则返回表示 JSON 类型的正数。
格式
JSONParsedState ( json )
参数
json
- 包含 JSON 对象或数组的文本表达式或字段。
返回的数据类型
数字
原始版本
22.0
说明
JSONParsedState 表示指定的 JSON 是否已被解析(并且在内存中具有二进制表示),以及 JSON 是有效还是无效。此函数返回:
-
0 如果 JSON 尚未被解析(内存中不存在二进制表示)。
-
-1 如果 JSON 被解析但无效。如果这个 JSON 与其他 JSON 函数一起使用,它们会返回“?” 后跟一条错误消息。
-
1-6 如果 JSON 有效且已解析。该值对应于 JSONSetElement 中定义的 JSON 类型之一。
要显式解析 JSON 文本,请使用 JSONParse函数。
示例 1
-
JSONParse ( "[3]" )
返回 [3],因为如果 JSONParse 是有效的 JSON,则将输入 JSON 作为文本返回。 -
Let ( $a = JSONParse ("[3") ; JSONParsedState ($a) )
返回 -1,因为 $a 设置为已解析但无效的 JSON 数组。 -
Let ( $a = "[3]" ; JSONParsedState ($a) )
返回 0,因为 $a 没有被解析。 -
JSONParsedState ( JSONParse (Pi) )
返回 -1,因为值 Pi 已解析,但不是有效的 JSON。 -
Let ( $a = JSONSetElement ( "" ; "a" ; "b" ; JSONString ) ; JSONParsedState ($a) )
返回 3,因为 JSONSetElement 创建了一个解析的 JSON 对象存储在 $a 中。 -
Let ( $a = JSONParse ("[3]") ; JSONParsedState ($a) )
返回 4,因为 $a 已解析并且包含一个 JSON 数组。 -
JSONParsedState ( JSONParse ("") )
返回 -1,因为解析了一个空字符串,这是无效的 JSON。
示例 2
Let ( [
a = "[3"; /* 字符串是无效的 JSON 数组 */
b = JSONParse ( a ) ; /* 错误: 输入是无效的 JSON */
c = JSONParsedState ( a ) ; /* 0: 'a' 还只是文本 (未解析) */
d = JSONParsedState ( b ) ; /* -1: 'b' 已解析但无效 */
e = JSONFormatElements ( b ) ; /* 错误: 'b' 无效 */
f = JSONFormatElements ( a ) /* 错误: 'a' 中的 JSON 文本无效 */
] ;
a &¶& b &¶& c &¶& d &¶& e &¶& f
)
返回:
[3
? * 第 1 行、第 3 列
数组声明中缺少 ',' 或 ']'
0
-1
? * 第 1 行、第 3 列
数组声明中缺少 ',' 或 ']'
? * 第 1 行、第 3 列
数组声明中缺少 ',' 或 ']'
相比之下,如果变量 a
是有效的 JSON 数组 ("[3]"),则此示例返回:
[3]
[3]
0
4
[ 3 ]
[ 3 ]
注意以下差异:
-
第 2 行:
JSONParse ( a )
返回传递给 JSONParse 的原始文本。 -
第 4 行:
JSONParsedState ( b )
反映变量b
已解析,并且是一个有效的 JSON 数组。 -
第 5 行和第 6 行:JSONFormatElements 返回
b
中解析的 JSON 和a
中文本 JSON 的格式化文本。