有没有办法,我可以清空整个JSONObject - java

inq*_*ive 10 java json

我必须像这样填充一个json对象,假设它被命名为detailJSON:

{"amount": "5.00", "ac_no": "123456" } 
Run Code Online (Sandbox Code Playgroud)

我是这样做的:

detailJSON.put("amount","5.00");
detailJSON.put("ac_no","123456");
Run Code Online (Sandbox Code Playgroud)

在此之后,在一些共享首选项中输入详细信息,现在我想清除此JSONObject并使用相同的detailJSON对象来存储另一个json(使用不同的键),这样:

{"amount":"6.00", "loan_no":"123456"}
Run Code Online (Sandbox Code Playgroud)

我知道有一个方法remove(),它删除了特定的键和相应的值.

这有效:

detailJSON.remove("amount");
detailJSON.remove("ac_no");
Run Code Online (Sandbox Code Playgroud)

然后使用它 -

detailJSON.put("amount","6.0");
detailJSON.put("loan_no","123456");
Run Code Online (Sandbox Code Playgroud)

现在这是一个非常简单的例子.在我正在处理的代码中,我有很多键,所以使用remove实际上增加了LOC.另外,每次删除之前我都需要检查JSONObject是否has是特定键.

有没有其他方法,我可以实现清除JSONObject?

我试过了

detailJSON=null ;
detailJSON=new JSONObject();
Run Code Online (Sandbox Code Playgroud)

但它不起作用.

我基本上是在寻找类似clear()方法的东西,如果存在的话.

Bor*_*vić 5

Iterator keys = detailJSON.keys();
while(keys.hasNext())
  detailJSON.remove((String)detailJSON.keys().next());
Run Code Online (Sandbox Code Playgroud)

  • 这将抛出 ConcurrentModificationException (7认同)

Bru*_*ich 5

这个版本有一个开销,因为每次都要获取键集,但它可以正常工作,不会出现并发修改异常。

while(json.length()>0)
   json.remove(json.keys().next());
Run Code Online (Sandbox Code Playgroud)