JSONに関する注意点
職場で、JSONを返すAPIで値が無い/必要ないって時に何を返すべきかという話題がチラホラとあがります。
「trueとかってJSONなの?」って質問に自信満々で「はいJSONです!」「nullも文字列リテラルもJSONです!」とおまけ付きで即答したものの、不安になってRFCにあたったら間違えてました。
http://www.ietf.org/rfc/rfc4627.txt
ここの 2. JSON Grammar のBNFを見ると
A JSON text is a serialized object or array.
JSON-text = object / array
ってハッキリ書いてあります。
nodeの JSON.parseとかがパースできちゃうので勘違いしてました。
http://jsonlint.com/
ここにnullとか入れても正しく失敗します。
その他、ありがちなミスについては
http://d.hatena.ne.jp/m-hiyama/20080728/1217205390
檜山さんトコを参照スべし。
しかしそれにしても、HTTPに乗ったJSONの
Content-Length: 0
Content-Type: application/json
が正しいのか、正しい場合どう取り扱うべきなのかは謎のママ。