0

为了避免每次对近百个字段进行 NullPointerExceptions 的代码检查变得臃肿,我想将对象中的所有“null”引用替换为“0”。但是,以下代码根本不这样做。

private JSONObject vinfo;
Iterator iter = vinfo.keys();
while(iter.hasNext()){
    String key = (String)iter.next();
    String value = vinfo.getString(key);
    if (value==null){
       vinfo.put(key, "0");
    }
}

知道如何正确编码吗?

4

2 回答 2

0

它不起作用,因为您JSONObject不能包含“正常”null值,因为您不能将它们放入其中,正如 Javadoc for JSONObject.put(String name, Object value)method 所说:

如果该值为 null,则删除 name 的任何现有映射。

所以行的“值”字符串String value = vinfo.getString(key)永远不会是null. 您应该检查JSONObject.NULL

String key = (String)iter.next();
if (vinfo.isNull(key)) {
    vinfo.put(key, "0");
}

此外,我不确定这条线是否:vinfo.put(key, "0");不会给你ConcurrentModificationException

于 2012-05-14T09:32:35.967 回答
0

使用String.replaceAll()您的 JSON 字符串将所有空值替换为 0。

于 2012-05-14T09:19:25.070 回答