1. ホーム

[解決済み】JSONは"["で始めることができますか?

2022-04-08 12:13:29

質問

を読む限りでは json.org すべてのJSON文字列は { (中括弧)、および [ 文字(角括弧)は、JSONの配列要素を表します。

を使っています。 json4j で始まる入力を取得しました。 [ ということで、これは有効なJSONではないと思いました。JSONスキーマをざっと見ましたが、JSONファイルが以下の文字で始まってはいけないという記述は見つかりませんでした。 [ で始まるか、あるいは { .

解決方法は?

JSONには配列とオブジェクトがあります。具体的には、json.orgから引用しています。

<ブロッククオート

JSONは2つの構造で成り立っています。

  • 名前と値のペアのコレクション。様々な言語において、これは オブジェクト、レコードとして実現される。 struct、dictionary、hash table。 キー付きリスト、または連想配列。
  • 値の順序付きリスト。ほとんどの言語では、これは

    配列、ベクトル、リスト、またはシーケンス。

そして、この2つの構造体をこう説明しています。

なお、開始文字と終了文字はそれぞれ中括弧と角括弧である。

編集

そしてここから http://www.ietf.org/rfc/rfc4627.txt

<ブロッククオート

JSONのテキストは、トークンの列です。 トークンのセットには、6つの 構造文字、文字列。 数字、そして3つのリテラル名です。

JSONテキストは、直列化されたオブジェクトまたは配列です。

アップデート(2014年)

2014年3月現在、新しいJSONのRFCがあります( 7159 )の定義が若干修正されています(4/5ページ参照)。

RFC4627による定義は、以下の通りでした。 JSON-text = object / array

これは、RFC7159で次のように変更されました。 JSON-text = ws value ws

ここで ws は空白を表し value は以下のように定義される。

JSONの値は、オブジェクト、配列、数値、文字列のいずれかでなければなりません。 次の3つのリテラル名。

false null true

つまり、質問の答えはやはりイエスで、JSONテキストは角括弧で始めることができます(つまり、配列)。しかし、オブジェクトと配列に加えて、数値、文字列、または値も使用できるようになりました。 false , null または true .

また、前回のRFC4627の引用から変更されています(強調)。

<ブロッククオート

JSONテキストは、トークンの列です。 トークンのセットには、6つの 構造文字、文字列、数字、および3つのリテラル名です。

JSONテキストは . ただし、以前のある JSONの仕様では、JSONテキストはオブジェクトまたは 配列になります。 オブジェクトまたは配列のみを生成する実装では JSONテキストが要求された場合、すべてのJSONテキストが相互運用可能である。 の実装は、これらを適合するJSONテキストとして受け入れるでしょう。