0

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

4

1 回答 1

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
}

希望这可以帮助。

戴夫

于 2011-07-31T05:26:19.087 回答