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

时间:2015-07-06 07:20:03

标签: java json

我必须填充这样的json对象,假设它名为detailJSON:

{"amount": "5.00", "ac_no": "123456" } 

我是这样做的:

detailJSON.put("amount","5.00");
detailJSON.put("ac_no","123456");

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

{"amount":"6.00", "loan_no":"123456"}

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

此作品

detailJSON.remove("amount");
detailJSON.remove("ac_no");

然后使用它 -

detailJSON.put("amount","6.0");
detailJSON.put("loan_no","123456");

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

还有其他方法,我可以实现JSONObject的清除吗?

我试过

detailJSON=null ;
detailJSON=new JSONObject();

但它不起作用。

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

7 个答案:

答案 0 :(得分:4)

这个版本有一个开销,因为每次获取密钥集,但它没有并发修改异常。

while(json.length()>0)
   json.remove(json.keys().next());

答案 1 :(得分:2)

Iterator keys = detailJSON.keys();
while(keys.hasNext())
  detailJSON.remove((String)detailJSON.keys().next());

答案 2 :(得分:1)

如果detailJSON是地图变量,您可以使用detailJSON.clear()方法清空地图中的值。

答案 3 :(得分:1)

你可以,但这将是一个黑客。

Iterator i = detailJSON.keys();
while(i.hasNext()) {
    i.next().remove();
}

//or

detailJSON.keySet().clear();

它有效,因为JSONObject.keySet()会返回this.map.keySet()HashMap.keySet()的JavaDoc说的是什么:

  

返回此地图中包含的键的Set视图。该集由地图支持,因此对地图的更改将反映在集中,反之亦然。

来自集合的Java HashMap将返回java.util.HashMap.KeySetjava.util.HashMap.KeySet.clear();只调用map.clear()(KeySet是java.util.HashMap的内部类)< / p>

答案 4 :(得分:1)

你可以使用这种方法

public HashMap clearMap(HashMap detailJSON){
  for(String key: detailJSON.keySet())
    detailJSON.remove(key);
  return detailJSON;
}

答案 5 :(得分:0)

JSONObject似乎没有明确的方法:。如果您必须迭代所有JSONObject以清除它,最好获得父节点,并使用new JSONObject()进行更新。

您可能使用while来获取这些详细信息,因此您可以执行此操作:

Iterator keys = mJson.keys();
while(keys.hasNext())
{
    String key = keys.next();
    JSONObject detailJSON = mJson.getJSONObject(key);
    JSONObject newDetail = new JSONObject();
    ...
    mJson.put(key,newDetail);
}

使用JSONArray时:

for (int i=0; i < mJson.length(); i++)
{
    JSONObject detailJSON = mJson.getJSONObject(i);
    JSONObject newDetail = new JSONObject();
    ...
    mJson.put(i,newDetail);
}

答案 6 :(得分:0)

将 JSON 设为字符串并打印出来。 喜欢:

JSONObject jo =new JSONObject();
System.out.println(jo.toString());  ```