Unknown Region

プログラムでハマったエラーとその解決方法についての備忘録メモ

JSONのObjectとArrayの違いにご注意

まず、JSONについては以下のページが参考になるかと思います。

ja.wikipedia.org

 

JSONは基本的に以下のようなフォーマットで提供されます。

例: サンプルJSON(Object)

{
"hoge": "fuga"
}

このJSONの場合、JavaScriptJSON.parse(string)などで解釈させると、Objectとして認識できます。

ただし、Objectの他にArrayとしてもJSONを書くこともできるので注意が必要です。

例: サンプルJSON(Array)

[
"hoge", "fuga"
]

このJSONの場合、JavaScriptJSON.parse(string)などで解釈させると、Arrayとして認識できます。

つまり、単純にJSONと言ってもパース後にObjectになるのかArrayになるのか注意が必要ですね。

RESTfulなAPIを利用する場合、しっかりとフォーマットを確認することが重要です。

また、APIを設計する場合もこの辺りはしっかりとレスポンスのフォーマットを定義しておく必要がありますね。

 

余談ですが、派生としてJSONLというフォーマットもあります。

こちらは1行に1つの完結したJSONが格納されるもので、複数のJSONを改行コード区切りで持つことができます。

JSONでは構造の中で改行コードを特に気にしませんが、こちらでは各行に格納されるそれぞれのJSONの中に改行コードを含めてはいけません。

そして、この書式の場合はJSON.parse(string)では一発では変換できませんのでご注意を。

例: サンプルJSONP

{"hoge": "fuga"}
{"foo": "bar"}

 

例: JSONLでの値の取り出しサンプル(JavaScript)

var jsonl = '{"hoge": "fuga"}' + "\n" + '{"foo": "bar"}';
var jsons = jsonl.split("\n").map(function(line){ return JSON.parse(line); });

※ 改行コードに注意

 

連絡先: plugout777★yahoo.co.jp (クローラー対策のため★を@に変更してください)