JSON主细节结构

JSON主细节结构,json,structure,master-detail,invoice,Json,Structure,Master Detail,Invoice,我试图为一个简单的发票建模,该发票有一个invoice对象,其中至少有一个ArrayList,还有一个lineitem对象,其中ArrayList是给定行的值。我获取结果集,在其上循环,每次创建新的lineitem对象时,使用所需的字段值填充lineitem ArrayList,然后将该lineitem添加到invoice ArrayList。然后,我将其添加到JSONArray中,然后使用toString()将其“展平”,以获取要发送到客户端的json字符串。问题是,所有的行都在那里,只是作为

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

您需要在服务器端“解析”值/数组,以构建一个可以在客户端解释为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
}
现在,您将拥有一个可以使用的对象,如下所示:

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
}
for(变量1=0;I50)
//如果价格高于50,就采取行动
}
希望这有帮助


戴夫

你好,戴夫,谢谢你提供的精确细节,我相信我能理解你的意思。我尝试用更少的结构来提高速度和灵活性。你能帮助我理解为什么我不能在客户端解析我可以在下面生成的字符串吗。我希望能够循环“lineItem”并循环给定lineItem中的数据。我不知道如何构造jscript。我正在使用prototype我应该切换到jQuery吗?再次感谢你。[{“发票”:[{“lineItem”:[{“datum”:1},{“datum”:Shappo},…]},{“lineItem”:[{“datum”:3},{“datum”:Ajax洗涤剂},…]}嗨,这对我来说又是一个语法问题。我没有将字符串转换为JSON。@cp-没问题,很高兴你能将其排序:-)