たとえば、これは有効な JSON ドキュメントであると想定されていますか?
"foo"
json.org の文法仕様は完全には明確ではありません。仕様のどこにも、すべてが有効な JSON ドキュメントの{}
オブジェクトまたは配列にある必要があるとは書かれていないと思います。[]
JSONLint は、スタンドアロンの文字列"foo"
をエラーとしてマークし、すべてが{}
オブジェクトまたは[]
配列内にあると想定します。
ただし、主要なブラウザー (IE 8、IE 10、Chrome 28、Firefox 23、Opera 12) の JSON オブジェクトは、スタンドアロンのリテラルを問題なく受け入れます。
>>> JSON.parse('"foo"');
"foo"
>>> JSON.parse('true');
true
>>> JSON.parse('1234');
1234
Python 2.7+ でも同じです:
>>> import json
>>> json.loads('"foo"')
u'foo'
>>> json.loads('true')
True
>>> json.loads('1234')
1234
では、誰が正しく、誰が間違っているのでしょうか?