<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />该 JSL 文件包含用于转换的函数JSON将文本转换为 JSL 数据结构或 JMP 数据表。 JSON 表示嵌套“数组”和“对象”的结构。 JSON 类型/值在 JSL 中表示如下:
| JSON | 吉林省 | 笔记 |
|---|
| 大批 | 列表 | 值序列 |
| 目的 | 关联数组 | 一组命名值 |
| 数字 | 数字 | |
| 细绳 | 细绳 | |
| 真的 | 1.0 | |
| 错误的 | 0.0 | |
| 无效的 | 。 | 缺失值 |
转换为 JMP 数据表时,名称代表列,数组值代表行。 非数组值将被向下填充以匹配数组值。
主要功能
所有函数都位于名称空间“JSON”内,以避免名称冲突其他功能。
dt = JSON:Make Table( json text | obj )
obj = JSON:Parse( json text )
示例数据
原始 JSON
{"region":"Europe",
"country":[
{"name":"France", "population":66.1},
{"name":"Germany", "population":80.8}
]
}
转换后的JSL
Associative Array(
{{"country", {
["name" => "France", "population" => 66.1],
["name" => "Germany", "population" => 80.8]
}},
{"region", "Europe"}}
)
请注意,不会保留集合元素的顺序。 它在 JMP 中变为按字母顺序排列。
可以使用正常的 JSL 下标访问已解析对象的值。 例如,如果数据保存上述解析结果,您可以通过以下方式访问它:
data["country"][1]["name"]; // "France"
转换后的数据表
| 国家的名字 | 国家.人口 | 地区 |
|---|
| 法国 | 66.1 | 欧洲 |
| 德国 | 80.8 | 欧洲 |
请注意,区域值会重复。
实施说明
请将问题报告给文件交换讨论或xan.gregg@jmp.com 。
更新:我还附上了克雷格的JSON 解析器 II.jsl ,这是 JSON Parser.jsl 的更快版本。
聪明的代码Xan,使用JSL列表作为堆栈来处理嵌套的JSON结构是一个好主意。
使用模式匹配快速 JSON 解析代码的变化速度更快,但尚未经过充分测试。
感谢您向我指出插入功能,这是这个难题的重要组成部分。