0

私のアプリでは、形式のjson応答を解析したい

{"quote":[{"orderId":"3209926"},{"totalpages":1}]} 

以下は私が行ったコードですが、問題は「totalpages」値を取得する方法ですか?

  try {
JSONObject jObject = new JSONObject(result);
JSONArray jArray = jObject.getJSONArray("quote");
for (int i = 0; i < jArray.length(); i++)
                 {
        JSONObject offerObject = jArray.getJSONObject(i);
        current.orderId = offerObject.getInt("orderId");

使用するとエラーが表示されます

 current.totalpage= offerObject.getInt("totalpages");

誰でもこれを解析する方法を知っていますか?事前に感謝します

4

2 に答える 2

3

オブジェクトに要求されたキーが含まれていない場合は、 throwgetInt()の他の get 関数と同様に注意してください。したがって、キーを要求する前に、オブジェクトにキーが含まれているかどうかを判断するために使用する必要があります。JSONObjectJSONExceptionhasKey()

たとえば、 for ループ内では、次のことができます。

JSONObject offerObject = jArray.getJSONObject(i);
if(offerObject.has("orderId") {
    current.orderId = offerObject.getInt("orderId");
}
if(offerObject.has("totalpages") {
    current.totalpage= offerObject.getInt("totalpages");
}

ループの後にフラグとチェックを追加して、JSON データに orderId と totalpages の両方が存在することを確認することもできます。

于 2012-04-19T09:52:28.510 に答える
1

あなたのjsonがその構造を持っている理由がわかりません。しかし、それを解析したい場合は、has関数を使用して次のようなことを行う必要があります。

for (int i = 0; i < jArray.length(); i++) {
        JSONObject offerObject = jArray.getJSONObject(i);
        if(offerObject.has("orderId")) {
          current.orderId = offerObject.getInt("orderId");
        } else if(offerObject.has("totalpages")) {
          current.totalpage= offerObject.getInt("totalpages");
        }
}
于 2012-04-19T09:53:40.387 に答える