2011-07-29 9 views
0

最小限のArrayListを持つ請求書オブジェクトと、指定された行の値のArrayListを持つlineitemオブジェクトを持つ単純な請求書をモデル化しようとしています。私は自分の結果セットを取得し、それをループし、新しいラインアイテムオブジェクトを作成するたびに、ラインアイテムArrayListに必要なフィールド値を設定し、そのラインアイテムをインボイスArrayListに追加します。次にこれをJSONArrayに追加し、toString()で「平坦化」してJSON文字列をクライアントに送信します。問題は、すべての行がそこにありますが、ラインアイテムオブジェクトの「裸の」配列です。クライアント側でループし、各ラインアイテムオブジェクトにアクセスし、その行を画面に印刷して続行できる別の構造が必要です。私はそれをどのように構造化して、ラインアイテムを処理するためにループすることができる「外側の」オブジェクトを持っていますか?JSONマスター/ディテール構造

答えて

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]]"; 

、上記の純粋な文字列、次のようにJSON文字列を解析するためにjQueryを使用することができ、たとえばので、再び、あなたは、オブジェクトにこれを有効にするために、このクライアント側を解析する必要がある。

このことができます

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); 

さて、あなたは次のように働くことができるオブジェクトを持つことになります。

デイブ

+0

こんにちはデイブ 精密なディテールをありがとう、と私はそれをあなたの方法を理解すると信じています。私はスピードと柔軟性のために構造が少なくてしようとしています。あなたがなぜ私が下で作ることができる文字列をクライアント側で解析できないのか理解できますか? "lineItem"をループして、指定されたlineItem内のデータをループすることで、jscriptをどのように構造化するかを確認できます。私はjQueryに切り替えるべきですか?再びありがとう。 [{"lineItem":[{"datum":3} {{"datum":{{"datum":}}、{{"lineItem" 、{"datum":Ajax Detergent}、...]} ...}] –

+0

こんにちはすべて それは私にとってもう一度構文上の問題でした。私はJSONに文字列を変換しませんでした。 –

+0

@cp - probはありません。うれしいことに、それを並べ替えることができました:-) –