【问题标题】:How to access values in a multidimensional JSON array with jQuery如何使用 jQuery 访问多维 JSON 数组中的值
【发布时间】:2012-12-07 06:01:57
【问题描述】:

所以我用 getJSON 获取了一个多维 JSON 数组,我想访问数组中的值,但不能超过数组中的第一个元素。

"producers",
[
    {
        "producer":{
            "id":"1",
            "name":"Em\u00e5mejeriet",
            "address":" Grenv\u00e4gen 1-3",
            "zipcode":" 577 39",
            "district":" Hultsfred",
            "webpage":"http:\/\/www.emamejeriet.se",
            "logoURL":"..\/producenter\/images\/ema.png",
            "latitude":"57.4999",
            "longitude":"15.828"
        }
    },
    {
        "producer":{
            "id":"2",

...等等。

我的代码:

$.getJSON("/url/producers.json", function(data) {
    $.each(data, function() {
        $.each(this, function(key, value) {
            console.log(value.producer);
        });
    });
});

输出是一个对象,我不知道有什么更好的粘贴方法,从浏览器控制台复制:“> Object {id: "1", name: "Emåmejeriet", address: "Grenvägen 1-3, zipcode: "577 39", disctrict: "Hulsfred"...}

正如我所说,我从这个论坛搜索并测试了不同的方法,但无法理解它。

【问题讨论】:

  • 你能发布实际的 JSON 吗?很难说没有看到...
  • 您作为示例显示的输出没有任何意义。请在代码块中显示一些实际数据。

标签: jquery json multidimensional-array getjson


【解决方案1】:

如果value.producer 的输出是一个对象,那么您应该能够访问该对象的属性。例如,value.producer.name 应该输出 'asdfsadf'。

更新

您的 json 数据似乎无效。 (我假设“生产者”是数据对象的一个​​属性,该属性的值是所有“生产者”对象的数组。)

我创建了这个小提琴 (http://jsfiddle.net/kAsPm/),它按预期工作。我只需要把“producers”后面的逗号改成冒号:

"producers":  // changed from "producers",
[
    {
        "producer":{
            "id":"1",
            ...

【讨论】:

  • 这正是我一直在尝试做的,但我得到“未定义”。
  • 数据好像无效。我已经用链接的 jsfiddle 更新了我的答案。
  • 哦,好的。我去更新了创建 JSON 文件的函数,然后将其返回给生产者以进行测试,而不是多维的,这就成功了。在这种情况下,我实际上不知道为什么我要多维。谢谢!
【解决方案2】:

我使用 tempo.js 渲染引擎,它进行多维数组渲染。 链接在这里 http://tempojs.com/

下载 tempo.cs 并点击链接。

【讨论】:

    【解决方案3】:

    打开你的萤火虫控制台,粘贴以下内容并执行:

    var json = '{' + 
    '"peopleList":[' +
    '{"id":1,"name":"marcelo","address":"rua meh","phone":"85 99999999"},'+
    '{"id":2,"name":"marcelo2","address":"rua meh2","phone":"85 9999.9999"}]}';
    
    var parsed = JSON.parse(json);
    

    现在,由于您将在 JSON 的第二层下有两个对象,因此您需要指定对象,然后您将看到它允许您选择其属性:

    parsed.peopleList[0].name
    

    在使用动态生成的 JSON 之前,获取一些用于测试目的的虚拟数据(当然,具有相同的结构)并在实现最终代码之前使用它。

    【讨论】:

    • 我通常不在 Firebug 中工作,虽然它似乎有一些不错的功能,比如 this。工作完美,感谢您指出这一点。
    猜你喜欢
    • 2011-08-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-05-27
    • 1970-01-01
    • 2017-10-28
    相关资源
    最近更新 更多