javascript从复杂的JSON中获取数据

时间:2012-07-08 03:50:58

标签: javascript

有一个json(#json),如下所示,在学生部分,前两个是一个组,最后两个是一个组。(由一组no,如no.1和no.2分组)一套) 问题是我需要从学生部分获取数据并制作2个表(取决于在该示例中有多少个数量,2个)。如何以编程方式修改json数据结构,我可以获取数据来做上面的事情?

表(#table1)看起来像:
没有。命名
1汤姆 2 jacky

没有。命名
1汤姆 2 jacky

#JSON

{
"people": {
    "student": [{
        "name": "tom"
        "no.": "1"
        "other": "a"
    },{
        "name": "tom"
        "no.": "1"
        "other": "e"
    },{
        "name": "jack"
        "no.": "2"
        "other": "d"
    },{
        "name": "tom"
        "no.": "1"
        "other": "c"
    },{
        "name": "tom"
        "no.": "1"
        "other": "d"
    },{
        "name": "jack"
        "no.": "2"
        "other": "g"
    }]      
}}

这是我的jsRender模板:

    <table>      
    <thead>
        <tr><td>Table 1</td></tr> 
        <tr><td>no.</td><td>name</td></tr> 
    </thead> 
    <tbody>
    {{for student}}
        <td>{{>no.}}</td>
        <td>{{>name}}</td>
    {{/for}}
    </tbody>
</table>

将输出:

no. name
1 tom
2 jacky
1 tom
2 jacky

如何修改模板以使输出像#table1

1 个答案:

答案 0 :(得分:0)

你需要这样的东西:

var yourJSON; // All JSON data
var studentData = yourJSON.people.student; // Student array
var tableIndex = 1; // Index for table name

// Loop to print student data
for (var i = 0, length = studentData.length; i < length; i++) {
    if (studentData[i]['no.'] == '1') {
        if (tableIndex > 1) {
            print('</tbody></table>');
        }
        print('<table>' +
            '<thead>' +
                '<tr>' +
                    '<td>Table ' + tableIndex + '</td>' +
                '</tr>' + 
                '<tr>' +
                    '<td>no.</td>' +
                    '<td>name</td>' +
                '</tr>' + 
            '</thead>' +
            '<tbody>');
        tableIndex++;
    }
    print('<tr><td>' + studentData[i]['no.'] + '</td>');
    print('<td>' + studentData[i]['name'] + '</td></tr>');
}

print('</tbody></table>'); // Closing the last table

我不知道您的模板引擎是如何工作的所以我使用print函数来显示模板中需要添加的内容。