2012-11-24 82 views
0

我有一个JSON,我需要得到这个JSON,并将其放入html中作为ul列表。它获取对象的值并在html中显示[object Object]。如果我修改json然后它的作品。所以在我的脚本中可能有些问题,我无法正确循环json文件。能有人帮助请:getJSON显示[对象对象]而不是实际值

我的JSON是:

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

和JS IS

<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" } 
          ] 
        } 


       ] 
     } 
} 
] 
+0

你能说出你想要的结果吗? “迭代”有点太模糊 - 屏幕上应显示哪些元素,以及它们包含的JSON数据是什么? – pimvdb

+0

@pimvdb:我需要这个json来解析我的方法:http://adobe.github.com/Spry/samples/data_region/JSONDataSetSample.html#Example10。输出应该是如下图所示的链接 – Mike

+0

的示例10看看http://stackoverflow.com/questions/11922383/i-have-a-nested-data-structure-json-how-can-access -a特定的价值。如果您知道JSON的结构,则访问正确的值不应该很困难。 –

回答

3

data你遍历是数组,其中包含对象。所以你的key将是0,1等,并且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" 
} 
+0

如何使用我已经使用的方法获得像我拥有的​​嵌套json。例如在你看来什么是这个例子getjson的理想方法http://adobe.github.com/Spry/samples/data_region/JSONDataSetSample.html#Example10 – Mike

+1

@Mike:*“怎么会得到一个嵌套的JSON如何我有,使用我用过的方法“*见答案的第一部分。 –

+0

如果您看到我更新的JSON,我再次显示对象。所以它绝对取决于嵌套的级别。有没有办法适用于所有级别的json嵌套。对不起,如果我问哑巴问题,但我是新来json – Mike

相关问题