JSON値はstring、number、true、false、nullで有効なJSONですか?つまり、
true
有効なJSONドキュメント?それとも、配列/オブジェクトである必要がありますか?
一部のバリデーターはこれを受け入れますが(例:http: //jsonlint.com/)、他のバリデーターは受け入れません(例:http: //jsonschemalint.com/)。RFCとjson.orgは、この問題について明確ではありません。
JSON値はstring、number、true、false、nullで有効なJSONですか?つまり、
true
有効なJSONドキュメント?それとも、配列/オブジェクトである必要がありますか?
一部のバリデーターはこれを受け入れますが(例:http: //jsonlint.com/)、他のバリデーターは受け入れません(例:http: //jsonschemalint.com/)。RFCとjson.orgは、この問題について明確ではありません。
2014年3月現在:はい。仕様から:
JSONテキストはシリアル化された値です。JSONの特定の以前の仕様では、JSONテキストがオブジェクトまたは配列になるように制約されていたことに注意してください。JSONテキストが呼び出されるオブジェクトまたは配列のみを生成する実装は、すべての実装がこれらを準拠するJSONテキストとして受け入れるという意味で相互運用可能です。
しかし、この質問が最初に尋ねられたとき、答えは次のとおりでした:いいえ。元の仕様は次のように述べています:
JSONテキストは、シリアル化されたオブジェクトまたは配列です
したがって、JSONテキストの最も外側のデータ型は、オブジェクトまたは配列のいずれかである必要があり、文字列、ブール値、数値、またはその他のデータ型にすることはできませんでした。
はい、ECMA-404 JSON DataInterchangeStandardによると。
出典:http ://www.ecma-international.org/publications/files/ECMA-ST/ECMA-404.pdf
JSONテキストは、JSON値の文法に準拠するUnicodeコードポイントから形成された一連のトークンです。
そして、以下に、JSON値の文法は次のように与えられます。
JSON値には、オブジェクト、配列、数値、文字列、true、false、またはnullを指定できます。
@quentinが引用しているように、これはRFCと直接競合します。更新されたRFCは8259で、次のように記述されています。
JSONの特定の以前の仕様では、JSONテキストがオブジェクトまたは配列になるように制約されていたことに注意してください。JSONテキストが呼び出されるオブジェクトまたは配列のみを生成する実装は、すべての実装がこれらを準拠するJSONテキストとして受け入れるという意味で相互運用可能です。