7

JSON (Javascript) オブジェクトの要素を参照する方法を教えてください。例: alert(homes.Agents[1].name);

<script>
    var homes = [
 {
    "Agents" : {
        "name" : "Bob Barker",
        "name" : "Mona Mayflower" 
    },
    "Listings" : [
        {
            "h_id": "3",
            "city": "Dallas",
            "state": "TX",
            "zip": "75201",
            "price": "162500" 
        },
        {
            "h_id": "4",
            "city": "Bevery Hills",
            "state": "CA",
            "zip": "90210",
            "price": "319250" 
        },
        {
            "h_id": "5",
            "city": "New York",
            "state": "NY",
            "zip": "00010",
            "price": "962500" 
        } 
    ]
}

];

</script> 
4

6 に答える 6

14

上記の JSON はあまり適切ではありません。Agents 値の場合、2 番目のキーが最初のキーをオーバーライドします。

あなたはおそらく次のことを意味していました:

 "Agents" : [
     {"name" : "Bob Barker"},
     {"name" : "Mona Mayflower"} 
 ],

次に、最初のエージェントの名前に次のようにアクセスします

homes[0]['Agents'][0]['Name']

同様に、リストから値の 1 つを取得するには、次のようなことを行います。

homes[0]['Listings'][0]['city']
- or -
homes[0].Listings[0].city

有効な識別子がある場合はどこでもドット構文を使用できますが、それ以外の場合は配列構文を使用する必要があります。

補足として、データの構造はわかりませんが、構造[]全体を配列で囲んでいる外部レベルを削除できる可能性があります。次に、すべてにアクセスする必要はなくhomes[0]['Listings']、代わりに単純にhomes['Listings'].

于 2010-01-15T21:34:14.700 に答える
6

JSON 構文が間違っています。オブジェクトで同じキーを 2 回持つことはできません。代わりに、配列が必要です。

var homes = {
  "Agents" : [
    { "name" : "Bob Barker" },
    { "name" : "Mona Mayflower" }
  ],
  ...
}

次に、次のようにエージェントにアクセスできます。

homes.Agents[1] // => { "name": "Mona Mayflower" }

// or

homes.Agents[1].name // => "Mona Mayflower"
于 2010-01-15T21:33:25.823 に答える
3

Homes は配列であるため、最初のアクセサーはインデックス ベースです。

家[0]

Agents は Object であり、同じ名前の 2 つのキーを含む Object です。それはノーノーです。

このデータを自分で定義している場合は、変更する必要があります

"Agents": {
    "name" : "Bob Barker",
    "name" : "Mona Mayflower"
}

 "Agents": [
        {"name" : "Bob Barker"},
        {"name" : "Mona Mayflower"}
    ]

次に、問題のデータにアクセスできます

homes[0].Agents[1].name
于 2010-01-15T21:35:17.280 に答える
2

オブジェクト プロパティに一意の名前を付ける必要があります。あなたの例では、homes[0].Agents.name が常に「Mona Mayflower」になるように、2 番目の name プロパティが最初のプロパティを上書きしています。

並べ替えたら、これを探していると思います:

homes[0].Agents.name 
于 2010-01-15T21:33:13.803 に答える
1

これは無効です。JSON エージェントは単なるオブジェクトであり、配列ではありません。このように再構成された場合:

"Agents" : [
  { "name" : "Bob Barker"},
  { "name" : "Mona Mayflower"}]

homes.Agents[1].name次に、「Mona Mayflower」を取得するために使用できます

于 2010-01-15T21:34:14.107 に答える
0

次のリンクからの例:

var myJSONObject = {"bindings": [
        {"ircEvent": "PRIVMSG", "method": "newURI", "regex": "^http://.*"},
        {"ircEvent": "PRIVMSG", "method": "deleteURI", "regex": "^delete.*"},
        {"ircEvent": "PRIVMSG", "method": "randomURI", "regex": "^random.*"}
    ]
};

" " は " "myJSONObject.bindings[0].methodを返しますnewURI

于 2010-01-15T21:33:58.233 に答える