<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 解析代碼的變化速度更快,但尚未經過充分測試。
感謝您向我指出插入功能,這是這個難題的重要組成部分。