我正在尝试从JSON文件获取坐标。
JSON文件结构:
{
"parkeerlocaties": [
{
"parkeerlocatie": {
"Locatie": "{\"type\":\"Point\",\"coordinates\":[4.9032801,52.3824545]}"
}
}
我可以访问Locatie
对象,它返回以下内容:
{"type":"Point","coordinates":[4.9032801,52.3824545]}
但是当我尝试从JSON文件中获取坐标时,却无法得到定义。
代码:
$.getJSON(parkingUrl, function(parkingData) {
pData = parkingData.parkeerlocaties;
for (var x = 0; x < pData.length; x++ ) {
ploc = parkingData["parkeerlocaties"][x]["parkeerlocatie"]["Locatie"]["coordinates"];
console.log(ploc);
};
});
};
那么,如何从JSON文件中获取坐标?
答案 0 :(得分:3)
您的Locatie
键指向一个字符串,而不是一个对象。您可以使用JSON.parse()
将此字符串转换为对象,以便随后可以访问coordinates
键。
ploc = JSON.parse(parkingData["parkeerlocaties"][x]["parkeerlocatie"]["Locatie"])["coordinates"];
所以您的代码应如下所示:
$.getJSON(parkingUrl, function(parkingData) {
pData = parkingData.parkeerlocaties;
for (var x = 0; x < pData.length; x++) {
ploc = JSON.parse(parkingData["parkeerlocaties"][x]["parkeerlocatie"]["Locatie"])["coordinates"];
console.log(ploc);
}
});
答案 1 :(得分:2)
您应使用JSON.parse
将JSON字符串转换为JSON对象。
JSON.parse(parkingData.parkeerlocaties[0].parkeerlocatie.Locatie).coordinates
此处Locatie是JSON字符串。
$.getJSON(parkingUrl, function(parkingData) {
pData = parkingData.parkeerlocaties;
for (var x = 0; x < pData.length; x++ ) {
ploc = JSON.parse(parkingData.parkeerlocaties[x].parkeerlocatie.Locatie).coordinates
console.log(ploc);
};
});
};
答案 2 :(得分:0)
尝试保存文件,避免转义序列“ \”
{ "parkeerlocaties": [ { "parkeerlocatie": { "Locatie": {"type":"Point","coordinates":[4.9032801,52.3824545]} } }
答案 3 :(得分:0)
我添加了以下代码供您进一步参考。这将帮助您了解自己的错误。您的json字符串在json字符串的末尾缺少“}”和“]”。最好使用格式化的JSON来验证您的JSON。 json validation
try{
var test = "{\"parkeerlocaties\": [{ \"parkeerlocatie\": {\"Locatie\": {\"type\":\"Point\",\"coordinates\":[4.9032801,52.3824545]}}}]}";
var jsondata = JSON.parse(test);
var pData = jsondata.parkeerlocaties;
for (var x = 0; x < pData.length; x++ ) {
var ploc = jsondata["parkeerlocaties"][x]["parkeerlocatie"]["Locatie"]["coordinates"];
alert(ploc);
};
}catch(e){alert(e)}