使用Javascript从JSON对象访问坐标数组

时间:2019-01-21 11:30:22

标签: javascript arrays json

我正在尝试从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文件中获取坐标?

4 个答案:

答案 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)}