【问题标题】:getJSON displays [object Object] rather than actual valuesgetJSON 显示 [object Object] 而不是实际值
【发布时间】:2012-11-24 09:06:15
【问题描述】:

我有一个 JSON,我需要获取这个 JSON 并将其作为 ul li 列表放入 html。它将值作为对象获取并在 html 中显示 [object Object]。如果我修改 json,那么它可以工作。所以我的脚本中可能有问题,我无法正确循环遍历 json 文件。有人可以帮忙吗:

我的 JSON 是:

[
    {
        "us":"USA"  
    },
    {
        "fr":"FRANCE"
    },
    {
        "es":"Spain"
    },
    {
        "sa":"South Africa"
    }
]

和 JS 是

<script>
  $.getJSON('jsonfile', function(data) {
    var items = [];
    $.each(data ,function(key,val) {
      items.push('<li id="'+ key +'">' + val +'</li>');
    });
    $('<ul />' , {
      'class':'new-div',
      html:items.join('')
    }).appendTo('body');
  });
</script>

更新的 JSON:

[
{
    "items":
        {
            "item":
                [
                    {
                        "id": "0001",
                        "type": "donut",
                        "name": "Cake",
                        "ppu": 0.55,
                        "batters":
                            {
                                "batter":
                                    [
                                        { "id": "1001", "type": "Regular" },
                                        { "id": "1002", "type": "Chocolate" },
                                        { "id": "1003", "type": "Blueberry" },
                                        { "id": "1004", "type": "Devil's Food" }
                                    ]
                            },
                        "topping":
                            [
                                { "id": "5001", "type": "None" },
                                { "id": "5002", "type": "Glazed" },
                                { "id": "5005", "type": "Sugar" },
                                { "id": "5007", "type": "Powdered Sugar" },
                                { "id": "5006", "type": "Chocolate with Sprinkles" },
                                { "id": "5003", "type": "Chocolate" },
                                { "id": "5004", "type": "Maple" }
                            ]
                    }


                ]
        }
}
]

【问题讨论】:

  • 你能说你想要什么结果吗? “迭代”有点太模糊了——屏幕上应该出现哪些元素,它们应该包含来自 JSON 的哪些数据?
  • @pimvdb:我需要使用我的方法解析这个 json:adobe.github.com/Spry/samples/data_region/…。输出应该是如下链接示例 10 所示的表格
  • 看看stackoverflow.com/questions/11922383/…。如果您知道 JSON 的结构,那么访问正确的值应该不难。

标签: javascript jquery ajax json object


【解决方案1】:

您正在循环的data 是包含对象的数组。所以您的key 将是01 等,而val 将是数组中该位置的对象

您的 JSON 结构实际上让输出有点痛苦,因为您的每个对象只有一个属性,但属性名称因对象而异。你可以做到这一点,通过循环遍历对象属性,即使它们只有一个:

var items = [];
$.each(data ,function(outerKey, outerVal) { // <== Loops through the array
  $.each(outerVal, function(key, val) {     // <== "Loops" through each object's properties
      items.push('<li id="'+ key +'">' + val +'</li>');
  });
});

...但我会改为更改 JSON 结构。例如,假设键是唯一的,您的原始代码将使用以下结构:

{
    "us":"USA",
    "fr":"FRANCE",
    "es":"Spain",
    "sa":"South Africa"
}

【讨论】:

  • 如何使用我使用的方法获得像我一样的嵌套 json。例如,在您看来,对于此示例,getjson 的理想方法是什么adobe.github.com/Spry/samples/data_region/…
  • @Mike:“如何使用我使用的方法获得像我一样的嵌套 json” 请参阅答案的第一部分。
  • 如果您看到我更新的 JSON,我会再次显示该对象。所以这绝对取决于嵌套的级别。有没有适用于所有级别的json嵌套的方法。对不起,如果我问的是愚蠢的问题,但我是 json 新手
  • @Mike:你能从服务器端对 JSON 的结构做些什么吗?
  • @nhahtdh:不,我只有 js 作为选项。
猜你喜欢
  • 2021-05-14
  • 2014-12-11
  • 1970-01-01
  • 2021-10-17
  • 1970-01-01
  • 1970-01-01
  • 2021-07-15
  • 2021-01-26
  • 2021-01-01
相关资源
最近更新 更多