如何使用 getJSON 分配 json 对象

How to assign json object using getJSON

我想将 json 对象 branch latlng 分配给 jsonData 变量。
如果我 console.log jsonData.responseJSON.positions.lengthjsonData.responseJSON.positions[0].lat,等等
我可以像这样看到我的 json 数据。 console image
但是如果我对它进行编码并且 运行,它就会出错。
例如,

var jsonData = $.getJSON("{% static "kia_data_brlatlng.json" %}", function(data){
    console.log(jsonData)
});

for(var i = 0; i < jsonData.responseJSON.positions.length; i++) {
    //not work
}

for(var i = 0; i < 681; i++) {
    //work
}

有人给了我一个提示,它需要在 $.getJSON 中使用回调函数,但仍然很难找到解决方案。
任何帮助将不胜感激!

我将添加我的 json 文件的样子。

{
    "positions": [
      {
        "branch": "A",
        "lat": 37.5221642,
        "lng": 127.0339206
      },
      {
        "branch": "B",
        "lat": 35.1547587,
        "lng": 129.0389295
      },
      //and 679 more
    ]
}

这是由于 Javascript 的异步性质。你必须等到你得到回应。或者您可以在收到响应时编写代码。

var jsonData = $.getJSON("{% static "kia_data_brlatlng.json" %}", function(data){
    console.log(jsonData)
    for(var i = 0; i < data.responseJSON.positions.length; i++) {
      //here this will work
    }
});

或 getJSON return promises 以便您使用 then 来获取响应。在这里查看:function wait with return until $.getJSON is finished

查看您的 json 对象后基本上看起来像这样

    jsonData = {
        "positions": [
          {
            "branch": "A",
            "lat": 37.5221642,
            "lng": 127.0339206
          },
          {
            "branch": "B",
            "lat": 35.1547587,
            "lng": 129.0389295
          },
          //and 679 more
        ]
    }

所以如果是这种情况,当你想迭代它时,你可以像这样简单地迭代它

    for(var i = 0; i < jsonData.positions.length; i++) {
        //work
        console.log(jsonData.positions[i])
    }

这是因为getJSON函数是异步的,所以循环在你获取jsonData变量中的数据之前执行。