Java中的JsonConfig详解

JSON lib能够将Java对象转成json格式的字符串,也可以将Java对象转换成xml格式的文档,同样可以将json字符串转换成Java对象或是将xml字符串转换成Java对象。
无论出于何种原因,某些时候,我们需要对对象转为字符串的过程加以控制,最常见需求如数值格式化和日期格式化。JSON lib提供了JsonConfig对象,该对象能够深刻影响Java对象转成json字符串的行为。
比如我们要控制JSON序列化过程中的Date对象的格式化,以及数值的格式化,JsonValueProcessor是最好的选择。
 
(1)JsonValueProcessor
Example:
java里面时间类型转换成json数据就成这样了:
"createTime":{"date":30,"day":3,"hours":15,"minutes":14,"month":3,"nanos":0,"seconds"
:38,"time":1209539678000,"timezoneOffset":-480,"year":108}
 
期望的结果是"yyyy-mm--dd"
 
解决方案:使用jsonConfig即可
JsonConfig jsonConfig = new JsonConfig();
jsonConfig.registerJsonValueProcessor(java.util.Date.class, new DateJsonValueProcessor("yyyy-MM-dd HH:mm:ss"));
 
(2)setIgnoreDefaultExcludes
Example:
@SuppressWarnings("unchecked")
public static void testMap() {
Map map = new HashMap();
map.put("name", "json");
map.put("class", "ddd");
JsonConfig config = new JsonConfig();
config.setIgnoreDefaultExcludes(true); //默认为false,即过滤默认的key
 
JSONObject jsonObject = JSONObject.fromObject(map,config);
System.out.println(jsonObject);
}
上面的代码会把name 和 class都输出
而去掉setIgnoreDefaultExcludes(true)的话,就只会输出name,不会输出class。
原文地址:https://www.cnblogs.com/jbml-154312/p/7251525.html