从Factual API解析JSON字符串

时间:2015-01-22 03:57:32

标签: jquery json

就像标题所说,我使用Factual API返回地理位置附近的一些地方,并且在使用jQuery解析数据时遇到问题。我返回的完整json字符串的示例与此类似:

"{
\"version\": 3,
\"status\": \"ok\",
\"response\": {
    \"data\": [
        {
            \"region\": \"ON\",
            \"tel\": \"(519)452-4430\",
            \"category_labels\": [
                [
                    \"CommunityandGovernment\",
                    \"Education\",
                    \"CollegesandUniversities\"
                ]
            ],
            \"name\": \"FanshaweCollege\",
            \"longitude\": -81.200929,
            \"fax\": \"(519)452-4420\",
            \"website\": \"http: //www.fanshawec.ca\",
            \"hours\": {
                \"monday\": [
                    [
                        \"6: 00\",
                        \"17: 00\"
                    ]
                ],
                \"tuesday\": [
                    [
                        \"6: 00\",
                        \"17: 00\"
                    ]
                ],
                \"wednesday\": [
                    [
                        \"6: 00\",
                        \"17: 00\"
                    ]
                ],
                \"friday\": [
                    [
                        \"6: 00\",
                        \"13: 00\"
                    ]
                ]
            },
            \"neighborhood\": [
                \"HuronHeights\"
            ],
            \"postcode\": \"N5Y5R6\",
            \"category_ids\": [
                29
            ],
            \"country\": \"ca\",
            \"address\": \"1001FanshaweCollegeBlvd\",
            \"locality\": \"London\",
            \"hours_display\": \"Mon-Wed6: 00-17: 00;Fri6: 00-13: 00\",
            \"latitude\": 43.013919,
            \"factual_id\": \"fba3ee56-9947-424d-bba4-f6c955491fff\",
            \"$distance\": 219.42628
        }
    ],
    \"included_rows\": 1
}
}"

这就是我尝试与JSON交互的方式:

success: function (data) {
        var result = JSON.parse(data.d);
        $.each(result, function (i, item) {
            console.log(result.latitude);
        });
    }

我从ajax调用获取了json并尝试了data.d并使用JSON.parse创建了一个对象并以这种方式访问​​它但我仍然遇到了深入研究实际数据的问题。我不断得到未定义的错误。

我应该如何解析类似这样的JSON字符串?

1 个答案:

答案 0 :(得分:1)

应该是:

$.each(result.response.data, function(i, item) {
    console.log(item.latitude);
});

从JSON中,您可以看到位置数组是嵌套的:

"{
\"version\": 3,
\"status\": \"ok\",
\"response\": {
    \"data\": [

第一个级别是response属性,其中是data属性。

然后在你的循环中,你使用的是response.latitude而不是item.latitude