在android上,我通过以下方法检索json对象;
JSONObject tempObj = jsonObj.getJSONArray("result");
为了确保它的正确性,我把它系统化了;
System.out.println(tempObj);
并给出以下输出:
{
"result": [
{
"telMobile": "5555555",
"products": [
{
"id": "113245",
"price": "749.0",
"unitId": 1
},
{
"id": "52589",
"price": "7.35",
"unitId": 1
}
]
}
]
}
因此,jsonobject tempobj内部有一个名为“products”的jsonarray,每个产品有三个名为“id”、“price”和“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"),tempObj.getInt("unitId")));
}
这完全是毫无意义的。我可以适当地获得其他字段。这意味着当我不检索unitid而写1时;
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));
}
然后正确地构造对象。我试着把它作为一个字符串,然后转换成int-as;
Integer.parseInt(tempProduct.getString("unitId"));
但是unitid仍然会出错。我认为服务器端会出现问题,但是jsonobject会正确到达,因为我可以从logcat输出中看到它。这是一个简单的整数,怎么会引起这样的自大呢?这样的案件背后会不会有一些不同的问题?
最佳答案
你应该改变
tempObj.getInt("unitId")
到
tempProduct.getInt("unitId")
实际上,您正在尝试从
tempObj
中获取值。那是错误的。没有价值。所以不是从tempProduct
中获取值