<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 。
アップデート: Craig'sも付けましたJSON パーサー II.jslこれは、JSON Parser.jsl のはるかに高速なバージョンです。
素晴らしいです -- 5 分間の解析が 1 秒に短縮されました。
Xan の賢いコードでは、JSL リストをスタックとして使用して、ネストされた JSON 構造を処理するのは素晴らしいアイデアです。
パターンマッチングを使用した高速な JSON 解析コードのより高速なバリエーションですが、まだ十分にテストされていません。
挿入機能について教えてくれてありがとう。これはパズルの重要なピースでした。