<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />此 JSL 文件包含用於轉換的函數JSON文本到 JSL 數據結構或 JMP 數據表中。 JSON 表示嵌套的“數組”和“對象”的結構。 JSON 類型/值在 JSL 中表示如下:
| JSON | JSL | 筆記 |
|---|
| 大批 | 列表 | 值序列 |
| 目的 | 關聯數組 | 命名值集 |
| 數字 | 數字 | |
| 細繩 | 細繩 | |
| 真的 | 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 .
更新: 我也附上了 Craige 的JSON 解析器 II.jsl ,這是一個快得多的 JSON Parser.jsl 版本。
聰明的代碼 Xan,使用一個 JSL 列表作為堆棧來處理嵌套的 JSON 結構是個好主意。
使用模式匹配進行快速 JSON 解析代碼的更快變化,仍然沒有經過很好的測試。
感謝您指出插入函數,這是拼圖的重要部分。