如何清空一个JSONArray

7

你的确切需求是什么?你需要清除数组中的所有数据还是只需要删除特定值? - Aerrow
从JSONArray中删除所有数据。 - Archie.bpgc
这是包含该函数的库的链接:http://json-lib.sourceforge.net/apidocs/net/sf/json/JSONArray.html - Ali Imran
1
如果那是一个循环怎么办! - Skynet
9个回答

17
jsonArray = new JSONArray(new ArrayList<String>());

5
你似乎有一个自信的答案,但我很好奇 - 这是否会导致每次新添加后未使用的JSONArray副本?就像为字符串变量设置新值一样? - Chucky
1
这就像建议通过list = new ArrayList<>();来清除List对象。 - Asu
这显然是一个错误,它并没有清空数组,而是创建了一个新的数组,因此之前的数组根本没有被清空。如果在另一个变量上保留了对该对象的引用,那么你将会遇到大麻烦。 - Elad Lavi

7

这不是一个完美的回答,但你可以这样做:

jsonArray=new jsonArray("[{}]");

编辑

根据评论中的建议,您也可以使用以下代码:

jsonArray=new jsonArray();

3
为什么不直接使用new JSONArray() - Hot Licks

1

刚刚创建了本地变量

JSONArray jsonArray = new JSONArray();
jsonArray.put(productlist);

每次使用本地块添加jsonserver数据时,如果您声明了全局块,则需要清除jsonarray。

1

我认为“new JSONArray()”不是一个好的解决方案。

有时候你需要从内部类中访问JSONArray对象,所以你必须将JSONArray对象声明为final,然后就不能再将其分配给新的对象了。

最好的方法是通过循环删除其元素。

while(myjsonarray.length()>0)
{
    myjsonarray.remove(0);
}

你说过 "没有像 jsonArray.remove(index); 这样的方法",并且在问题标签中加了 "java"、"android"

但是现在我正在使用 Android Studio 3.6.3,而 JSONArray 类已经有了这个方法,你也可以在Android Studio 官方文档中找到它。因此,我猜你应该编辑问题标题,改成 "为什么我的 Android Studio 没有 JSONArray 类的全部方法"。


调用remove方法需要最低API级别为19。 - ucMedia

0

我尝试了很多方法,但唯一有效的方法是

jsonArray.clear();

or you can make it local variable again

JSONArray jsonArray = new JSONArray();

0
你需要在JSONArray的长度上运行一个while循环,并在每次删除第一个索引。当JSONArray的长度为零时,循环将达到一个阶段,以显示JSONArray不为空并已清除。
while (optionArray.length() > 0) {
            optionArray.remove(0)
    }

这是与此其他答案相同的解决方案。 - Eric Aya
你可能是指“...展示JSONArray为空并已清空。” - jaco

0
在我所拥有的库中,似乎没有办法调用JSONObject内部私有ArrayListclear()方法。但是它确实有public Object remove(int index)方法。我只是使用了new JSONObject() :(


0

jsonArray.clear();这对我起作用了。我正在使用来自org.json库的JSONArray(而不是org.json.simple)。


-4

这是一个答案,请尝试:

jsonArray=[]

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接