【问题标题】:JsonArray error : org.json.JSONException: JSONArray[1] not foundJsonArray 错误:org.json.JSONException:未找到 JSONArray[1]
【发布时间】:2015-05-09 08:18:03
【问题描述】:

我目前是 Json 的新手,遇到了一个问题。我搜索了很多,但找不到答案!

我正在从 json url 获取名称列表。名称可以在此 json 文件中重复,但我只想将它们的一条记录保存到我称为“arr”的新数组中。可以看到代码如下:

    JSONArray interests = json.getJSONArray("Interests");
    JSONArray arr = new JSONArray();
    int i = 0;
    int p = 0;
    int e = 0;

    for (; i < interests.length(); i++) {

        JSONArray items = interests.getJSONObject(i).getJSONArray("items");
        for (int j = 0; j < items.length(); j++) {
            String string = items.getJSONObject(j).getString("authors");
            String[] parts = string.split(",");
            for (int k = parts.length - 1; k >= 0; k--) {

                for (int a = 0; a <= arr.length(); a++) {

                    if (arr.length() == 0 || !arr.getJSONObject(a).getString("label").equals(parts[k])) {
                        JSONObject obj = new JSONObject();
                        obj.put("id", p++);
                        // obj.put("value", e++);
                        obj.put("label", parts[k]);
                        arr.put(obj);
                    }
                }
            }

        }

    }

    System.out.print(arr);
}

问题是当我运行此代码时出现以下错误:

线程“主”org.json.JSONException 中的异常:未找到 JSONArray[1]。

我尝试在每次迭代中打印 arr.length() 并得到 1!但我真的不知道为什么我会收到这个错误?!

提前致谢

【问题讨论】:

  • 你能发布导致这种情况的 JSON 吗?
  • 是的,我可以发布 json。事实上,我想通过删除重复的名称来清理我的 json 文件。我可以发送我不干净的 json 并且它运行良好,只有当我用这个检查它时: for (int a = 0; a

标签: java arrays json jsonobject


【解决方案1】:

索引移位的常见错误。下面的例子:

Array[0] = "foo";
Array[1] = "bar";
for(int i=0; i <= Array.length(); i++)
  doSomesing(Array[i]);

Array.length() 会返回 2,但是索引范围是 0 到 1,所以正确的应该是

for(int i=0; i < Array.lenth(); i++)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-09-12
    • 2017-10-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-10-26
    • 1970-01-01
    相关资源
    最近更新 更多