10

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

4

6 回答 6

10

只需创建一个新的 JSONArray。

JSONArray otherJsonArray = new JSONArray();

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

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

于 2013-02-19T01:48:26.607 回答
4

就放jsonArray = new JSONArray()

于 2015-01-30T13:14:37.053 回答
2

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

因此,如果是这种情况,请向后执行,这样您的迭代器就不会超出范围:

    int startingLength = someJsonArray.length();

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

        someJsonArray.remove(i);

    }
于 2014-12-23T15:05:34.913 回答
1

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

JSONArray otherJsonArray = new JSONArray("[]");
于 2014-05-05T11:03:31.620 回答
0

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

于 2017-11-07T15:32:43.767 回答
0

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

这是分配了新数组的代码,它不起作用,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();
  }

于 2021-08-02T12:26:51.797 回答