2013-01-04 104 views
0

我有这样的数据:循环JSON解析数据

[ 
    [ 
     {"id":"1", "sentiment":"0", "name":"Company 1", "count":"10"}, 
     {"id":"2", "sentiment":"0", "name":"Company 2", "count":"5"}, 
     {"id":"3", "sentiment":"0", "name":"Company 3", "count":"7"} 
    ], 
    [ 
     {"id":"1", "sentiment":"1", "name":"Company 1", "count":"3"}, 
     {"id":"2", "sentiment":"1", "name":"Company 2", "count":"2"}, 
     {"id":"3", "sentiment":"1", "name":"Company 3", "count":"4"} 
    ] 
] 

我如何,如下图所示,通过这个数据,以便有两个表圈:

id  Company  sentiment  count 
1  Company 1  0   10 
2  Company 2  0   5 
3  Company 3  0   7 

id  Company  sentiment  count 
1  Company 1  1   3 
2  Company 2  1   2 
3  Company 3  1   4 

我已经开始这一点,但卡住了:

var obj = JSON.parse(data); 
    $.each(obj, function(i, obj_item){ 
    $.each(obj_item, function(j, item){ 
    // got stuck here     
    }) 
}) 

任何帮助,将不胜感激。由于

+0

你是什么意思* *卡住? – moonwave99

+0

据我的理解,数据已经以你想要的形式出现了。 – greut

+0

您应该查看一个像https://github.com/janl/mustache.js/这样的框架,这将使您的模板更加清洁和高效。 – geedubb

回答

1

在这里你去... http://jsfiddle.net/kbVg4/

var table = ''; 
for(var i = 0; i < data.length; i++){ 
    //One table per subset 
    table += '<table>'; 

    //Table headers 
    table += '<tr><th>Id</th><th>Company</th><th>Sentiment</th><th>Count</th></tr>'; 

    //Looping over the subset 
    for(var j = 0; j < data[i].length; j++){ 
     table += '<tr>'; 
     table += '<td>'+data[i][j]['id']+'</td>'; 
     table += '<td>'+data[i][j]['name']+'</td>'; 
     table += '<td>'+data[i][j]['sentiment']+'</td>'; 
     table += '<td>'+data[i][j]['count']+'</td>'; 
     table += '</tr>'; 
    } 
    table += '</table>'; 
} 

//Use the appropriate ID. 
$('body').append(table); 

让我知道它的工作!

+0

他使用jQuery。不妨使用$ .each等。 – geedubb

+0

如果他理解了“each”,他就不会卡在它上面!因此,我使用for循环和数组通知,以便他知道发生了什么! –

+0

我的印象是他被卡住了问题的实际动态HTML元素。他有循环的代码,使用$ .each – geedubb

1

这里ü去..

var data= "your show json array in question"; 

var str=""; 
$.each(data, function(i, obj_item){ 
    str+="<table border='1'>"; 
    str+="<tr><td>id</td><td>sentiment</td><td>name</td><td>count</td>"; 
    $.each(obj_item, function(i1, obj){ 

     str+="<tr><td>"+obj.id+"</td><td>"+obj.sentiment+"</td><td>"+obj.name+"</td><td>"+obj.count+"</td>"; 
     str+="</tr>"; 
    }); 
    str+="</table>"; 

}); 

$('div').html(str);//replace with your selector 

fiddle这里

+2

大提琴.. @Asker - 重新编排他的'​​“+ obj.id ...',并用'obj.sentiment'切换obj.name的位置,它会匹配你的布局 – sircapsalot

+0

@ sircapsalot谢谢.. :) – bipen