在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中获取值

10-02 02:39