问题描述
我正在尝试将Birt报表中的JSON值从数据库列打印成多行。它可以很好地打印JSON数组的最后一行,但不能打印出它前面的行。
我的动态文本字段代码:
var phone = JSON.parse(row["c_numbers"]);
for(var k in phone) {
phone[k]['type']+': '+phone[k]['phone']
}
它是打印出来的:
这是数据库中的JSON:
[{"type": "Cell","phone": "123-123-1233"},{"type": "","phone": "123-423-4123"}]
最简单的方法就是将其打印出来,但它所做的只是最后一个数组项。报表设计:
因此它正在获取数据,遍历JSON并打印,但不是所有数组项,而是最后一个。
解决方法
答案是将新数据分配给新变量,然后在最后打印出最终变量。我还必须在每个输出的末尾添加<br>
作为换行符。
var phone = JSON.parse(row["c_numbers"]);
var finalPhone = '';
for(var k in phone) {
finalPhone = finalPhone+(phone[k]['type'] > '' ? phone[k]['type']+': ' : '')+phone[k]['phone']+"<br>"
}
finalPhone;