簡體   English   中英

使用Javascript從JSON對象訪問坐標數組

[英]Access coordinates array from JSON object with Javascript

我正在嘗試從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文件中獲取坐標?

您的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);
  }
});

您應該使用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);
            };
        });
  };

嘗試保存文件,避免轉義序列“ \\”

{ "parkeerlocaties": [ { "parkeerlocatie": { "Locatie": {"type":"Point","coordinates":[4.9032801,52.3824545]} } }

我添加了以下代碼供您進一步參考。 這將幫助您了解自己的錯誤。 您的json字符串在json字符串的末尾缺少“}”和“]”。 最好使用格式化的JSON來驗證您的JSON。 json驗證

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM