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

请注意,如果对象不包含请求的键,则与throw的getInt()其他 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 回答