为了避免我的代码在几百个字段的每个机会检查NullPointerExceptions时膨胀,我想用“0”替换对象中的所有“null”引用。但是,以下代码根本不执行此操作。
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");
}
}
知道如何正确编码吗?
答案 0 :(得分:0)
使用String.replaceAll()
到您的JSON字符串,将所有空值替换为0。
答案 1 :(得分:0)
它不起作用,因为您的JSONObject
不能包含“普通”null
值,因为您无法将它们放入其中,因为JSONObject.put(String name, Object value)
方法的Javadoc说:
如果值为null,则删除名称的任何现有映射。
因此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