[解決済み] この単純な文字列は有効なJSONとみなされますか?
質問
SOでは、複雑な構造を持つJSONを有効なJSONと見なすかどうかという質問をよく見かけます。
しかし、もう一方の端にあるものについてはどうでしょうか?
"12345"
上記は有効なJSONでしょうか?
どのように解決するのですか?
はい、ほとんどのコンテキストで。これは、JSON値を表す有効なJSON構文です。
このあたりの混乱は、Douglas Crockford の
RFC 4627
を定義したものです。
application/json
インターネットメディアタイプを2006年に定義しました。それには、次のように書かれていました。
JSONテキストは、シリアライズされたオブジェクトまたは配列です。
しかし、Crockfordが2013年の投稿で説明したように(残念ながらGoogle+の残りとともに削除されましたが に保存されています。 ):
JSONは単なる文法であり、文法には数値や文字列が含まれます。JSONの用途は必然的にもっと制限されたものにならざるを得ません。RFC-4627は一つの可能な使用法であり、JSON自体の標準になることは意図されていませんでした。
この例の文字列は有効なJSON値ですが、この文字列を
application/json
HTTP レスポンスの本文として使用するのは正しくありませんでした。しかし、これはもはや正しいことではありません。RFC-4627は、2014年に発表された
RFC 7159
が発表され、廃止されました。
JSONテキストはシリアライズされた値です。以前のJSONの仕様では、JSONテキストはオブジェクトか配列でなければならないという制約があったことに注意してください。
JSON自体の標準規格も2013年に発表され ECMA-404 また、ECMAScript(JavaScript)仕様のエディション5.1でもJSONが定義されています。 ECMA-262 . これらの仕様とほとんどのパーサーは、どんなJSON値も、それが単なる文字列であっても、完全なJSONテキストとして許容します。
関連
-
[解決済み] 正しいJSONコンテンツタイプは何ですか?
-
[解決済み] JSONでコメントを使用することはできますか?
-
[解決済み] JavaScriptで "use strict "は何をするのか、その根拠は?
-
[解決済み] JavaScriptで文字列が部分文字列を含むかどうかを確認する方法は?
-
[解決済み] なぜGoogleはJSONレスポンスにwhile(1);を前置するのでしょうか?
-
[解決済み] HTML5のlocalStorageにオブジェクトを格納する方法は?
-
[解決済み] URLを新しいタブで開く(新しいウィンドウではない)
-
[解決済み] JSONPとは何か、なぜ作られたのか?
-
[解決済み] Bowerとnpmの違いは何ですか?
-
[解決済み] Javascriptで動的に命名されたメソッドを呼び出すにはどうすればよいですか?
最新
-
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 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] 有効なJSONの最小値は?
-
[解決済み] JSのDateからDay名
-
[解決済み] bootstrap のポップオーバーがすべての要素の上に表示されない
-
[解決済み] node.jsで文字列のsha1ハッシュを取得するにはどうすればよいですか?
-
[解決済み] JavaScriptを使用してHTML要素に属性を追加/更新するには?
-
[解決済み] JavaScriptで文字列を数値に変換する最速の方法は何ですか?
-
[解決済み] コールバック地獄とは何か、RXはそれをどのように、そしてなぜ解決するのか?
-
[解決済み] JavaScript のオブジェクトの配列を比較し、最小値/最大値を取得する
-
[解決済み] TypeScriptプロジェクトで既存のC#クラス定義を再利用する方法
-
[解決済み] jQueryを使用して、すべてのクリックイベントハンドラを削除するにはどうすればよいですか?