如何清除JSON数组中的数据

时间:2013-02-19 01:42:44

标签: java android json arrays

我正在开发一个项目,我必须清除JSON数组中的所有数据。似乎没有像 jsonArray.clear()这样的方法。还试过 jsonArray = new JSONArray()。那也没效果。建议请

6 个答案:

答案 0 :(得分:8)

只需创建一个新的JSONArray。

JSONArray otherJsonArray = new JSONArray();

或遍历数组并remove(int index)索引。

http://www.json.org/javadoc/org/json/JSONArray.html#remove(int)

答案 1 :(得分:3)

只需添加jsonArray = new JSONArray()

答案 2 :(得分:2)

创建一个新的将起作用,除非您已将其作为参数传递给方法,在这种情况下,您需要修改引用的对象,因为调用方法将无法看到新引用。

所以如果是这样的话,那就倒退吧,这样你就不会让你的迭代器超出界限:

    int startingLength = someJsonArray.length();

    for (int i = startingLength - 1; i >= 0; i--) {

        someJsonArray.remove(i);

    }

答案 3 :(得分:1)

你使用它 otherJsonArray已经存在,然后你使用

JSONArray otherJsonArray = new JSONArray("[]");

答案 4 :(得分:0)

我们可以使用someJsonArray.pop(index)来删除require记录。 我们可以在循环中使用此代码来删除所有记录。

答案 5 :(得分:0)

我有一种情况,我想从带有键“Constants”的 JSONArray 中删除所有条目,它是 JSONObject 中的一个元素,创建一个新的 JSONArray 并分配它不会清除 JSONArray,我必须遍历JSONArray 和 jsonArray.remove(i) 在他们每个人上,但是有第二种方法可以工作,它涉及从 JSONObject 中完全删除数组元素,在这种情况下是“常量”,并将其重新添加为新的 JSONArray。< /p>

这里是分配新数组的代码,这不起作用,JSONArray 保持不变:(我尝试了上述 new JSONArray(); 和 new JSONArray("[]");

        JSONObject jsonObj = new JSONObject(metadataOriginalJSON);
        if (jsonObj.isJSONArray("Constants")) {
            JSONArray constantsArray = jsonObj.getJSONArray("Constants");
            constantsArray = new JSONArray();
            metadataConstantsRemoved = jsonObj.toString();
        }

这是通过 JSONArray 进行迭代的代码,该代码有效:

  JSONObject jsonObj = new JSONObject(metadataOriginalJSON);
  if (jsonObj.isJSONArray("Constants")) {
      JSONArray constantsArray = jsonObj.getJSONArray("Constants");
      int i = 0;
      int arrayLenSanityCheckPreventEndlessLoop = constantsArray.length();
      while (constantsArray.length() > 0 && i < arrayLenSanityCheckPreventEndlessLoop) {
          constantsArray.remove(0);
          i++;
      }
      metadataConstantsRemoved = jsonObj.toString();
  }

第二种方法是删除整个 JSONArray 元素并将其重新添加到 JSONObject:

  JSONObject jsonObj = new JSONObject(metadataOriginalJSON);
  if (jsonObj.isJSONArray("Constants")) {
      jsonObj.remove("Constants");
      jsonObj.put("Constants", new JSONArray());
      metadataConstantsRemoved = jsonObj.toString();
  }