在javascript中读取JSON数据

时间:2011-08-09 14:42:14

标签: javascript jquery 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不起作用.. 我怎样才能正确阅读?

5 个答案:

答案 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"]);

工作示例:http://jsfiddle.net/mstjA/

答案 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;