将对象转换成字符串,是非常常用的功能,尤其在WEB应用中,使用 JSON lib 能够便捷地完成这项工作。
JSON lib能够将Java对象转成json格式的字符串,也可以将Java对象转换成xml格式的文档,同样可以将json字符串转换成Java对象或是将xml字符串转换成Java对象。
无论出于何种原因,某些时候,我们需要对对象转为字符串的过程加以控制,最常见需求如数值格式化和日期格式化。JSON lib提供了JsonConfig对象,该对象能够深刻影响Java对象转成json字符串的行为。
比如我们要控制JSON序列化过程中的Date对象的格式化,以及数值的格式化,JsonValueProcessor是最好的选择。
1 Map<String, Object> map = new HashMap<String, Object>(); 2 map.put("date", new Date()); 3 map.put("dates", Arrays.asList(new Date())); 4 JsonConfig config = new JsonConfig(); 5 config.registerJsonValueProcessor(Date.class, new JsonValueProcessor() { 6 //自定义日期格式 7 SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd"); 8 9 @Override 10 /** 11 * 处理单个Date对象 12 */ 13 public Object processObjectValue(String propertyName, Object date,JsonConfig config) { 14 return simpleDateFormat.format(date); 15 } 16 17 @Override 18 /** 19 * 处理数组中的Date对象 20 */ 21 public Object processArrayValue(Object date, JsonConfig config) { 22 return simpleDateFormat.format(date); 23 } 24 }); 25 System.out.println(JSONObject.fromObject(map, config).toString());