7

以下は、3 つの JSON 配列構造フォーマットです...

最初のものは、JSON.org で概説されているもので、私がよく知っているものです。

フォーマット #1

{"People": [
  {
    "name": "Sally",
    "age": "10"
  },
  {
    "name": "Greg",
    "age": "10"
  }
]}

2 つ目は、配列の要素に名前を付けるわずかなバリエーションです。私は個人的には気にしません。コードで配列の要素に名前を付けない (インデックスによってアクセスされる) のに、なぜ JSON で名前を付けるのですか?

フォーマット #2

{"People": [
  "Person1": {
    "name": "Sally",
    "age": "10"
  },
  "Person2": {
    "name": "Greg",
    "age": "10"
  }
]}

この最後のものは別のバリエーションで、 Format #2と非常によく似ていますが、属していない余分な中括弧があるように見えるため、これは正しくないという予感があります。

フォーマット #3

{"People": [
  {
    "Person1": {
      "name": "Sally",
      "age": "10"
    }
  },
  {
    "Person2": {
      "name": "Greg",
      "age": "10"
    }
  }
]}

繰り返しますが、形式 #1は JSON.org で概説されている JSON 配列形式であるため、有効であると確信しています。しかし、フォーマット 2フォーマット 3はどうでしょうか。それらのいずれかが有効な JSON と見なされますか? はいの場合、それらのフォーマットはどこから来たのですか? JSON.org やウィキペディアで概説されていません。

4

2 に答える 2

8

#1 と #3 は両方とも (ほぼ - カンマが欠落している) 有効な JSON ですが、異なる構造をエンコードします。

  • #1 は、名前と年齢の文字列プロパティを持つオブジェクトの配列を提供します
  • #3 は、オブジェクトの配列を提供します。それぞれに単一のオブジェクト プロパティがあり、それぞれに名前と年齢の文字列プロパティがあります。

#2 は無効です: 配列 ( [...で定義]) にはプロパティ名を含めることはできません。

于 2013-01-02T22:34:48.360 に答える
1

Format#1の解決方法 デフォルト:

array=[];
object={};

JSON コード:

var Json = {
    People:[]
};
Json.People.push({
     "name": "Sally",
     "age": "10"                        
});
Json.People.push({
     "name": "Greg",
     "age": "10"                        
});

JSON 結果:

{"People": [ { "name": "Sally", "age": "10" }, { "name": "Greg", "age": "10" } ] }

于 2016-03-22T12:15:09.763 に答える