【发布时间】:2015-09-23 05:54:18
【问题描述】:
我必须像这样填充一个 json 对象,假设它被命名为 detailJSON:
{"amount": "5.00", "ac_no": "123456" }
我是这样做的:
detailJSON.put("amount","5.00");
detailJSON.put("ac_no","123456");
在此之后,在一些共享首选项中输入了详细信息,现在我想清除这个 JSONObject 并使用相同的 detailJSON 对象来存储另一个 json(具有不同的键),这样:
{"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() 方法的东西,如果存在的话。
【问题讨论】:
-
您确定需要这样做吗?为什么不每次都使用新的 JSONObject?我认为删除每个字段比创建一个新字段成本更高。
-
@UweAllner 我也完全同意你的观点,但这是业务限制,要维持这样的结构。
-
detailJSON=new JSONObject();应该可以工作。您的代码中似乎存在错误。 -
detailJSON=null;必须删除对实际对象的引用detailJSON=new JSONObject();必须指向新创建的对象。在创建新对象后,填充新值并检查这是否有效。 -
好的,这应该有效,但事情是这样的。我将 detailJSON 传递给完成这项工作的函数,所以在这里如果我创建新的 json 对象,它是局部变量,因此它不起作用。而删除对原始参考的工作。