android JSON - no value for x

文章标签: android,android-json
2015-1-10 12:32:48     人阅读    


在android 开发中,我通过如下的代码接受了一串JSON 对象
JSONObject tempObj = jsonObj.getJSONArray("result");


为了保证返回的正确,我输入了json内容

System.out.println(tempObj);
And it gives the following output;
{
  "result": [
    {
      "telMobile": "5555555",
      "products": [
        {
          "id": "113245",
          "price": "749.0",
          "unitId": 1
        },
        {
          "id": "52589",
          "price": "7.35",
          "unitId": 1
        }
      ]
    }
  ]
}


通过输出看出 JSON对象包含了一个叫做 "products" json数组,每一个"products" 对象又包含2个字段 "id", "price" 、 "unitId".

我通过如下代码编辑这个数组取值报错 "no value for unitId"

for (int k = 0; k < tempObj.getJSONArray("products").length(); k++) {
    JSONObject tempProduct = tempObj.getJSONArray("products").getJSONObject(k);
    products.add(new Product(tempProduct.getString("id"), tempProduct.getString("price"),tempObj.getInt("unitId")));
}


感觉毫无头绪,我可以获得其他的字段,但是就是在获得 unitId 字段的时候出现问题

for (int k = 0; k < tempObj.getJSONArray("products").length(); k++) {
    JSONObject tempProduct = tempObj.getJSONArray("products").getJSONObject(k);
    products.add(new Product(tempProduct.getString("id"), tempProduct.getString("price"),1));
}


对象正确的被创建,我尝试把String转换int
Integer.parseInt(tempProduct.getString("unitId"));

但是 unitId 仍然报错,因为我输出的json串是确认返回了这个字段值,但是又获取不到,求指导

处理方法

你需要把
tempObj.getInt("unitId")
替换成
tempProduct.getInt("unitId")
实际上,你是从tempObj 中获得值,这是错误的,哪里没有值,你需要从tempProduct 中获得


原文地址:http://www.itmmd.com/201501/468.html
该文章由 萌萌的IT人 整理发布,转载须标明出处。

android学习笔记(41)android选项菜单和子菜单(SubMenu )   上一篇
下一篇  android 不通过editext 火灾customview中输入的文本值
精彩回复
我要追加问题,请求站长解决!
姓名:       

《程序员app》专门为程序员量身定做!