[解決済み] 有効なJSONの最小値は?
質問
JSONの記述をよく読んでみると http://json.org/ が、素朴な疑問に対する答えがわからない。どのような文字列が最小限の有効なJSONとなるのでしょうか?
-
"string"
は有効なJSONか? -
42
は有効なJSONか? -
true
は有効なJSONか? -
{}
は、空のオブジェクトが有効なJSONであるか? -
[]
空の配列は有効なJSONか?
解決方法は?
執筆時点では、JSONはもっぱら RFC4627 . これは、JSONテキストがシリアル化されたオブジェクトまたは配列であることを("2"の冒頭で)記述しています。
これは、次のことを意味します。
のみ
{}
と
[]
は、この規格に準拠したパーサーや文字列化器において、有効で完全なJSON文字列です。
しかし しかし、ECMA-404の導入はそれを変え、更新されたアドバイス はこちらからご覧いただけます。 . また ブログ記事 この問題について
しかし、さらに問題を混乱させるのが
JSON
オブジェクト(例えば
JSON.parse()
と
JSON.stringify()
) ウェブブラウザで利用できるのは
ES5で標準化された
というように、許容されるJSONテキストを明確に定義しています。
この仕様で使用されるJSON交換フォーマットは、2つの例外を除き、RFC4627で記述されたものと全く同じです。
ECMAScript JSON 文法のトップレベル JSONText プロダクションは、RFC4627 で規定されている JSONObject または JSONArray に限定されるのではなく、任意の JSONValue で構成することができる。
欠けた
ということになります。 すべて JSONオブジェクトは技術的にはRFC4627に準拠していますが、JSON値(文字列、ヌル、数字を含む)はJSONオブジェクトに受け入れられます。
したがって、適合するブラウザで数値を文字列化するには
JSON.stringify(5)
しかし、RFC4627 を遵守している他のパーサーでは拒否されます。ただし、上記のような特定の例外はありません。例えばルビー
は、そのような例の1つであるように思われます。
だけ
は、オブジェクトや配列をルートとして受け入れます。
. 一方、PHPは
は、特に例外を追加します。
スカラー型とNULLのエンコードとデコードも行うということです。
関連
-
[解決済み] 解決済み】clearInterval()が動作しない [重複] [重複]
-
[解決済み] 正しいJSONコンテンツタイプは何ですか?
-
[解決済み] JSONでコメントを使用することはできますか?
-
[解決済み] JavaScriptで "use strict "は何をするのか、その根拠は?
-
[解決済み] JavaScriptでオブジェクトをディープクローンする最も効率的な方法は何ですか?
-
[解決済み] なぜGoogleはJSONレスポンスにwhile(1);を前置するのでしょうか?
-
[解決済み] とは何ですか! (not not)演算子とは何ですか?
-
[解決済み] cURLでJSONデータをPOSTするにはどうすればよいですか?
-
[解決済み] JavaScriptでJSONをきれいに印刷する
-
[解決済み] HTML5のlocalStorageにオブジェクトを格納する方法は?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】Heroku:ノードアプリで「このアプリにはデフォルトの言語が検出されませんでした」エラーがスローされる
-
[解決済み】Facebook Graph API のクエリで with=location を使用すると "Uncaught (in promise) undefined" というエラーが発生する。
-
[解決済み】このエラーの原因は何ですか - "Fatal error: ローカルgruntを見つけることができません"
-
[解決済み】node.js TypeError: path must be absolute or specify root to res.sendFile [JSONのパースに失敗しました]。
-
[解決済み】TypeError: 'undefined'はオブジェクトではありません。
-
[解決済み】BootstrapのCollapseが折りたたまれない
-
[解決済み】WebpackとBabelで「このファイルタイプを扱うには適切なローダーが必要な場合があります。
-
[解決済み】getElementByIdはnullを返す?[クローズド]
-
[解決済み】TypeError: AngularJSで未定義のプロパティ'get'を読み取れない
-
[解決済み] [Solved] Uncaught Invariant Violation: 前のレンダリング中よりも多くのフックをレンダリングする