读书人

利用Jackson对Object,Map,List,数组,枚

发布时间: 2012-06-30 17:20:12 作者: rapoo

利用Jackson对Object,Map,List,数组,枚举,日期类等转化为json
[color=violet][size=large]


在其他类中定义jsonBinder对象:


在我的实际项目中,遇到一个有意思的问题,我把一个对象转为为json字符串时,调用binder.toJson(bean) ,这个方法,方法总是返回null,后面发现该bean中没有默认的构造函数,加上某人构造函数就ok了

以上部分转载来自于:http://zhangyou1010.iteye.com/blog/1049259

以下是参考人家的,自己写的部分:
/**
* 利用 Jackson 中的 {@link ObjectMapper} 类来让 java 对象和 json 字符串实现互相转换. 在某些场合下将 java 对象转换为 json
* 字符串有很多好处, 比如往缓存中存放数据. 可以看作是对 Jackson 的简单封装, 也可以通过 {@link #getObjectMapper()}
* 方法获得<code>objectMapper</code> 对象来完成其他操作. 为了获得更好的效率, 采用了 singleton 模式, jackson 对此是支持的.
*
* @author
*/
public class JsonBinder {private static ObjectMapper objectMapper = new ObjectMapper();private static JsonBinder jsonBinder;private JsonBinder(Inclusion inclusion) {// serializing 设置成 Inclusion.NON_DEFAULT 来提高性能objectMapper.getSerializationConfig().withSerializationInclusion(inclusion);}/** * 允许修改 {@link Inclusion}, 默认是 {@link Inclusion#NON_DEFAULT}, 也即对于未修改的属性不用进行 json 转换. *  * @param inclusion * @see #getInstance() */public static JsonBinder getInstance(Inclusion inclusion) {if (jsonBinder == null) {jsonBinder = new JsonBinder(inclusion);}return jsonBinder;}public static JsonBinder getInstance() {if (jsonBinder == null) {jsonBinder = new JsonBinder(Inclusion.NON_DEFAULT);}return jsonBinder;}/** * 从 json 字符串生成相应的 java 对象. * <ul> *     <li>1) 如果 JSON 字符串为 NULL 或 "null", 则返回 null.</li> *     <li>2) 如果 JSON 字符串为 "[]", 则返回空集合.</li> * </ul> *  * @param <T> * @param jsonString * @param clazz * @return */public <T> T fromJson(String jsonString, Class<T> clazz) {if (StringUtils.isEmpty(jsonString)) {return null;}try {return objectMapper.readValue(jsonString, clazz);} catch (IOException e) {return null;}}/** * 将 java 对象生成 json 格式. * <ul> *     <li>1) 如果对象为 null, 则返回 "null".</li> *     <li>2) 如果对象为空集合, 则返回 "[]".</li> * </ul> *  * @param object * @return */public String toJson(Object object) {try {return objectMapper.writeValueAsString(object);} catch (IOException e) {return null;}}/** * 获取 <code>objectMapper</code> 对象, 完成其他该 binder 未封装的功能. *  * @return */public ObjectMapper getObjectMapper() {return objectMapper;}}[/size][/color]

读书人网 >JavaScript

热点推荐