最小限の ArrayList を持つ請求書オブジェクトと、特定の行の値の ArrayList を持つ lineitem オブジェクトを持つ単純な請求書をモデル化しようとしています。結果セットを取得し、それをループして、新しい項目オブジェクトを作成するたびに、項目の ArrayList に目的のフィールド値を入力し、その項目を請求書の ArrayList に追加します。次に、これを JSONArray に追加し、toString() で「フラット化」して、クライアントに送信する json 文字列を取得します。問題は、すべての行がそこにあるが、lineitem オブジェクトの「むき出しの」配列であることです。クライアント側でループし、各 lineitem オブジェクトにアクセスし、行を画面に出力して続行できる別の構造が必要です。ラインアイテムを処理するためにループできる「外側の」オブジェクトを作成するにはどうすればよいですか?
5133 次
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 に答える