public static void main(String[] args) {
List<String> list = null;
Map<String, Object> map = new HashMap<>();
map.put("a", 41);
map.put("b", "");
map.put("c", null);
Long lon = null;
String str = null;
try {
// 是否输出值为null的字段,默认为false
System.out.println(JSON.toJSONString(map, SerializerFeature.WriteMapNullValue));
// List字段如果为null,输出为[],而非null
System.out.println(JSON.toJSONString(list, SerializerFeature.WriteNullListAsEmpty));
// 数值字段如果为null,输出为0,而非null
System.out.println(JSON.toJSONString(lon, SerializerFeature.WriteNullNumberAsZero));
// 字符类型字段如果为null,输出为"",而非null
System.out.println(JSON.toJSONString(str, SerializerFeature.WriteNullStringAsEmpty));
// 输出日期
System.out.println(JSON.toJSONString(new Date(), SerializerFeature.WriteDateUseDateFormat));
} catch (Exception e) {
e.printStackTrace();
}
}
输出结果:
{"a":41,"b":"","c":null}
null
null
null
"2016-10-13 14:46:14"
@wenshao 温少大神,请问为什么list、string、Long没有按照序列化规则输出呢?
2条答案
按热度按时间qkf9rpyu1#
Map中的null不知道类型,不能做额外处理
eufgjt7s2#
@PromethS 可以用JavaBean替换Map再toJSONString