我有这个JSON对象
{"stores":"{
"1":{
"name":"Publix",
"address":"1fbdfhbdhsdhsrh",
"long":"-84.012502",
"lat":"33.878952"},
"2":{
"name":"Publix",
"address":"fgsregerge",
"long":"-84.125147",
"lat":"33.9448"}
}"
}
这是在jquery.ajax调用中返回的数据类型:json。我能够访问data.stores并显示警告框中的所有商店,但data.stores.1不起作用.. 我怎样才能正确阅读?
答案 0 :(得分:3)
您可以使用data.stores["1"]
,但实际上您似乎是以一种非常奇怪的方式表示数组。
您应该只使用数组:
{
"stores": [
{
"name": "Publix",
"address": "1fbdfhbdhsdhsrh",
"long": "-84.012502",
"lat": "33.878952"
},
{
"name": "Publix",
"address": "fgsregerge",
"long": "-84.125147",
"lat": "33.9448"
}
]
}
然后,你可以这样访问它:
data.stores[0]
和data.stores[1]
。
答案 1 :(得分:1)
在“store”之后删除不必要的引号: JSON现在看起来应该是:
var dat = {
"stores": {
"1": {
"name": "Publix",
"address": "1fbdfhbdhsdhsrh",
"long": "-84.012502",
"lat": "33.878952"
},
"2": {
"name": "Publix",
"address": "fgsregerge",
"long": "-84.125147",
"lat": "33.9448"
}
}
};
并尝试使用此代码:
alert(dat.stores["1"]);
答案 2 :(得分:1)
JSON无效。当你把它带进Stack时,可能只是一个错字。
var data = {
"stores": {
"1": {
"name": "Publix",
"address": "1fbdfhbdhsdhsrh",
"long": "-84.012502",
"lat": "33.878952"
},
"2": {
"name": "Publix",
"address": "fgsregerge",
"long": "-84.125147",
"lat": "33.9448"
}
}
}
您不能使用点表示法来引用数字键。你需要使用括号。这两个是等价的:
var a = data.stores["1"].name; /* a = "Publix" */
var b = data["stores"]["1"]["name"]; /* b = "Publix" */
快乐的编码!
答案 3 :(得分:0)
这个JSON对象有些奇怪:它无效。您在stores
值附近有双引号。我想它们应该被删除,以便stores属性不是JSON字符串而是JSON对象。然后你可以像这样访问它:
alert(data.stores['1'].name);
这是live demo。
如果双引号确实存在,那么你有无效的javascript,因为你没有正确地转义里面的双引号。
答案 4 :(得分:0)
data.stores['1']
将为您提供json对象,然后您可以访问其中的属性,如
var stores = data.stores['1'];
var name = stores.name;
var address = stores.address;