有一个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
答案 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函数来显示模板中需要添加的内容。