java - "No value for"getJSONArray 异常

标签 java json parsing

我有一个像这样的 JSON 对象:

{
  "Successful": true,
  "Value": {
    "Materials":[{
      "MaterialID": 37628, 
      "MaterialID": 0, 
      "MaterialNo": 26868, 
      "Type": 0, 
      "MaterialName": Copper
    }],
    "Prices": []
  }
}

我正在尝试获取这样的 Material 数组:

    public ArrayList<Material> parseMaterial (JSONObject object)
    {
     try
       {
         JSONArray materialArray = object.getJSONArray("Materials");
       }
      catch (JSONException e)
      {
       Log.d("JSONParser=>parseMaterial", e.getMessage());
      }
    }

我得到这个异常:

JSONParser=>parseMaterial﹕ No value for Materials

你能告诉我代码有什么问题吗?谢谢。

最佳答案

您缺少一个步骤:更改

JSONArray materialArray = object.getJSONArray("Materials");

JSONObject value = object.getJSONObject("Value");
JSONArray materialArray = value.getJSONArray("Materials");

getJSONArray 不会“搜索”整个对象(如果对象中有多个 Material ,这可能会产生不可预测的结果),只会搜索第一级。

关于java - "No value for"getJSONArray 异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31312093/

相关文章:

java - IntelliJ - 将 Java 项目/模块转换为 Maven 项目/模块

带有 XMLUnit 2 和默认命名空间的 Java XPath

java - 计算到目前为止每 15 分钟一段时间的成本

java - 如何将 json 对象从 java 传递到 javascript?

json - 基于 TCP 的 JSON 传输选择

Racket 中的 HTML 解析问题

java - 在 hibernate 查询中返回通用对象而不是类实体

json - Mule Dataweave %1.0 中的条件过滤

java - 用java解析在线xml

c++ - 将带有千位(和小数)分隔符的字符串转换为 double