<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 | ヨーロッパ |
地域の値が繰り返されることに注意してください。
実装に関する注意事項
File Exchange ディスカッションまたは に問題を報告してください。 xan.gregg@jmp.com .
アップデート: Craige's も付けましたJSON パーサー II.jslこれは、JSON Parser.jsl のはるかに高速なバージョンです。
すばらしい -- 私の 5 分間の解析が 1 秒に短縮されました!
ネストされた JSON 構造を処理するためのスタックとして JSL リストを使用する巧妙なコード Xan は、優れたアイデアです。
パターン マッチングを使用した高速な JSON 解析コードのより速いバリエーション、まだ十分にテストされていません。
Insert 関数を教えてくれてありがとう。これはパズルの重要なピースでした。