1. ホーム
  2. javascript

[解決済み] この単純な文字列は有効なJSONとみなされますか?

2023-05-07 18:24:22

質問

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テキストとして許容します。