$ .getJSON只返回一个条目

时间:2015-11-11 13:53:00

标签: javascript jquery json object

我使用$.getJSON$.each来调用JSON端点并检索数据。当我调用数据时,我把它放在一个对象中,然后在控制台中检查它。但是,当我检查控制台时,只有一个条目。

为什么只返回一个条目?我做错了什么?

JSON endpoint

Fiddle

JavaScript的:

$(document).ready(function() {
    var url =
        'https://data.montgomerycountymd.gov/resource/housing-code-enforcement.json?street_number=9903';
    var myJson = {};
    $.getJSON(url, function(data) {
        $.each(data, function(i, field) {
            myJson = data;
        });
        console.log(myJson);
    });
});

3 个答案:

答案 0 :(得分:2)

看到每个人都在重复自己的想法。

正如@RoyMcCrosan所说,您的数据值是一个数组,但是您的myJson变量是一个对象。你做的是循环遍历数组,将该数组中的每个单元格放入myJson变量(这里是重要的位),覆盖它之前的值。所以你最终只得到数组中的最后一个值。

现在不知道你想对数据做什么,我们真的可以说你应该做什么,但这里有一些常见的情况:

如果您只是想复制数据并使用它,那么作为一个数组只需废弃$.each

var myJson = [];
$.getJSON(url, function(data) {
    myJson = data;
    console.log(myJson);
});

如果要将数据映射到最终的数组,但格式不同:

var myJson = [];
$.getJSON(url, function(data) {
    myJson = data.map(function (d) {
      return {}; //Some modified object
    });
    console.log(myJson);
});

如果要迭代数组并从每个对象中提取属性以添加myJson变量;

var myJson = {};
$.getJSON(url, function(data) {
    data.forEach(function (d) {
       //Some logic for figuring property name.
       var i = 'FieldName';
       myJson[i] = d[i];
    });
    console.log(myJson);
});

最后,data是一个使用本地循环方法的数组,例如.forEachfor循环。它们会比$.each更快。从技术上讲,myJson不是JSON本身就是一个JavaScript对象。

答案 1 :(得分:0)

$(document).ready(function() {
    var url =
        'https://data.montgomerycountymd.gov/resource/housing-code-enforcement.json?street_number=9903';
    var myJson = {};
    $.getJSON(url, function(data) {
        $.each(data, function(i, field) {
            myJson = data;
            console.log(myJson);   
     });

});

});

答案 2 :(得分:0)

您需要在每次迭代中移动console.log语句,但请注意,您的请求仅返回一个JSON文档,以便开始:

    var url =
      'https://data.montgomerycountymd.gov/resource/housing-code-enforcement.json?street_number=9903';
    var myJson = {};
    $.getJSON(url, function(data) {
      $.each(data, function(i, field) {
        myJson = data;
        document.write(JSON.stringify(myJson, undefined, 2)+'<br>')
      });
    });
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>