【问题标题】:Reading JSON data with jQuery使用 jQuery 读取 JSON 数据
【发布时间】:2012-02-08 01:02:28
【问题描述】:

我有一个 JSON 文件,当页面加载时我必须从这个文件中读取数据。我怀疑我的 JSON 结构有问题。 JSONLint 显示它是有效的。所以我一定是使用了错误的方法来访问它。

它基本上是一个对象数组(或者这就是我的想法)。

{"Listings":[
{"Listing1":
    {
        "agency_code":"BP",
        "property_code":"BON1",
        "Property_GUID":"6dded624",
        "FileNo /":"",
        "country":"AUSTRALIA",
        "state":"New South Wales",
        "subregion /":""
            }
        },
   {"Listing1":
    {
        "agency_code":"BPGA",
        "property_code":"BONNSTG4-Lot11",
        "Property_GUID":"6dded624-cde2-429a-81d4-bd6f91256345",
        "FileNo /":"",
        "country":"AUSTRALIA",
        "state":"New South Wales",
        "subregion /":""
            }
        }
    ]
}

我正在使用 $.ajax 来读取 JSON。文件加载成功。现在我如何访问各个“列表”以及如何衡量总共存在多少列表? 我尝试使用 $.each 循环遍历数组,但我的代码不起作用。

【问题讨论】:

  • 它不是一个对象数组,它是一个对象,有一个名为Listings 的属性,它包含您可能想要迭代的对象数组。除非您显示执行此操作的代码,否则无法判断。

标签: jquery json


【解决方案1】:

您有一个对象数组,但该数组不是第一层,它存储在顶级 Listings 属性中。

$.ajax({
    dataType : 'json',
    success  : function (response) {
        for (var i = 0, len = response.Listings.length; i < len; i++) {
            //You can now access individual properties like this:
            var agencyCode = response.Listings[i].Listing1.agency_code;
        }
    }
});

这个for 循环将比jQuery 的.each()$.each() 执行得更快:http://jsperf.com/jquery-each-vs-for-loops/2

这是一个演示:http://jsfiddle.net/btHy5/1/

【讨论】:

  • 我不确定我是否关注你。我在for 循环中使用len = response.Listings.length。在您的代码中,您实际上不需要获取总行数,因为您使用的是$.each()
  • 我的意思是回答 OP 的问题`如何衡量总共有多少个列表`
  • 看来我走对了。以前我的代码是$(function() { $.ajax({ type: 'GET', datatype: 'JSON', url: 'scripts/Listing.json', success: processJSON }); function processJSON(data) { $.each(data.Listings,function(i,item) { console.log(data.Listings.length); }); } }); 它在不同的浏览器中给了我不同的错误。 Chrome 显示它无法找到未定义的长度属性。
  • @Sparda 通常,当您调试这样的代码时,首先执行console.log(data),然后执行console.log(data.Listings);。从你所知道的真实情况出发,朝着你试图摆脱的错误努力。
  • 没关系,它的工作。这些错误是由于 Chrome 的缓存造成的。感谢您的帮助。
猜你喜欢
  • 2016-09-13
  • 1970-01-01
  • 2014-05-07
  • 1970-01-01
  • 2013-10-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-07-02
相关资源
最近更新 更多