【问题标题】:How to assign JSONArray to variable?如何将 JSONArray 分配给变量?
【发布时间】:2018-06-17 18:01:26
【问题描述】:

我是 Java 新手,遇到一个问题:

JSONObject data = new JSONObject(json);
List<String> list = (List<String>) data.getJSONArray("childrens");

for (String item : list) {
       Log.d("DEBUG", item);
}

我想将data.getJSONArray("childrens") 分配给一个变量list,但是我有一个错误:

java.lang.ClassCastException: org.json.JSONArray 无法转换为 java.util.List

我该怎么做?

我想遍历 JSON 数组。

【问题讨论】:

  • 错误告诉你问题到底出在哪里,.getJSONArray(...) 方法返回一个 org.json.JSONArray 对象,不是一个 java.util.List 对象,并且铸造成功了不要解决这个问题。您需要创建一个 JSONArray 变量,将方法返回的对象分配给它,然后使用该对象可用的方法。
  • 但是如何遍历 JSONArray 呢?
  • JSONArray API 会告诉您可以使用哪些方法,但我会考虑使用 length()get(int index) 方法来使用 for 循环进行迭代。
  • 使用 JSONArray list = data.getJSONArray("childrens");

标签: java


【解决方案1】:

data.getJSONArray("childrens") 不能返回 org.json.JSONArray 类型的对象。

但是,您可以遍历 JSONArray :

    JSONArray jArray = data.getJSONArray("childrens");

    for (int i = 0; i < jArray.length(); i++) {
        JSONObject jb = jArray.getJSONObject(i);
        Log.d("DEBUG", jb);
    }

【讨论】:

    【解决方案2】:

    JSONObject 仅包含 JSONArray,不包含 List。您必须手动转换它:

    JSONObject data = new JSONObject(json);
    JSONArray jsonArray = data.getJSONArray("childrens");
    for (Object o : jsonArray) {
        String child = (String)o;
        Log.d("DEBUG", child);
    }
    

    【讨论】:

    • @HovercraftFullOfEels documentation 声明它是 2016 年的 最新 版本。
    猜你喜欢
    • 1970-01-01
    • 2014-01-15
    • 2014-03-04
    • 2014-05-11
    • 2012-11-14
    • 2021-03-10
    • 2010-09-21
    • 2021-09-17
    • 2016-04-13
    相关资源
    最近更新 更多