在javascript中读取JSON数据
我有这个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不起作用..我怎样才能正确阅读?
你可以使用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]
。
在“stores”之后删除不必要的引号: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"]);
工作示例: http : //jsfiddle.net/mstjA/
那个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" */
快乐的编码!
这个JSON对象有些奇怪:它无效。 stores
附近有双引号。 我想它们应该被删除,以便stores属性不是JSON字符串而是JSON对象。 然后你可以像这样访问它:
alert(data.stores['1'].name);
这是一个现场演示 。
如果双引号确实存在,那么,你有无效的javascript,因为你没有正确地转义里面的双引号。
data.stores['1']
将为您提供json对象,然后您可以访问其中的属性
var stores = data.stores['1']; var name = stores.name; var address = stores.address;