就像标题所说,我使用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字符串?
答案 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
。