JSON主 - 详细结构

时间:2011-07-29 04:31:07

标签: json structure master-detail invoice

我正在尝试建模一个简单的发票,该发票具有最低限度为ArrayList的发票对象和具有给定行的值的ArrayList的lineitem对象。我得到了我的结果集,循环遍历它,每次创建一个新的lineitem对象,用所需的字段值填充lineitem ArrayList,然后将该lineitem添加到发票ArrayList。然后我将它添加到JSONArray然后用toString()“展平”它以获取我的json字符串发送到客户端。问题是所有的线都在那里,但作为一个“裸”的lineitem对象数组。我需要另一种结构,我可以在客户端循环,访问每个lineitem对象,并将行打印到屏幕并继续。我如何构造它所以我有“外部”对象,我可以循环处理线条项目?

1 个答案:

答案 0 :(得分:0)

您需要“解析”服务器端的值/数组,以构建一个可在客户端上解释为JSON的字符串。有很多库(服务器和客户端都可以帮助您)。最终,当它到达客户端时,你需要一个类似下面的字符串。

var strJsonInvoive = "[InvoiceID : 1, Date : "01/01/1900", otherProperties: "value" ,
//the Invoice Detail Objects below will result in an array of objects
InvoiceDetails : [InvoiceDetailID : 1, Description: "desc", Price: 100, Quantity: 1, Tax: true],
[InvoiceDetailID : 2, Description: "desc", Price: 200, Quantity: 2, Tax: false],
[InvoiceDetailID : 3, Description: "desc", Price: 300, Quantity: 3, Tax: true]]";

此时,上面纯粹是一个字符串,所以再次,您需要解析此客户端将其转换为对象,例如,您可以使用jQuery解析json字符串,如下所示:

var jsonInvoice = jQuery.parseJSON(strJsonInvoice);

现在,您将拥有一个可以使用的对象,如下所示:

for(var 1=0; i<jsonInvoice.InvoiceDetails.length;i++)
{
    if (jsonInvoice.InvoiceDetails[i].Price > 50)
        //do something if price is greater than 50
}

希望这有帮助。

戴夫