本篇博客使用的POM:
<dependency>
<groupId>org.codehaus.jackson</groupId>
<artifactId>jackson-mapper-asl</artifactId>
<version>1.9.12</version>
</dependency>
一. 首先通过ObjectMapper 设置序列化和反序列化时候的属性(非常重要!!!,能够填大多数序列化和反序列化时候的坑)
private static ObjectMapper objectMapper = new ObjectMapper(); static { //该属性设置主要是将对象的所有字段全部列入,若有特殊需求,可以进入JsonSerialize.Inclusion该枚举类查看 objectMapper.setSerializationInclusion(JsonSerialize.Inclusion.ALWAYS); //该属性设置主要是取消将对象的时间默认转换timesstamps(时间戳)形式 objectMapper.configure(SerializationConfig.Feature.WRITE_DATES_AS_TIMESTAMPS, false); //该属性设置主要是将忽略空bean转json错误 objectMapper.configure(SerializationConfig.Feature.FAIL_ON_EMPTY_BEANS, false); //忽略在json字符串中存在,在java类中不存在字段,防止错误。 objectMapper.configure(DeserializationConfig.Feature.FAIL_ON_UNKNOWN_PROPERTIES, false); //所有日期都统一为以下样式:yyyy-MM-dd HH:mm:ss,这里可以不用我的DateTimeUtil.DATE_FORMAT,手动添加 objectMapper.setDateFormat(new SimpleDateFormat(DateTimeUtil.DATE_FORMAT)); }
二. 封装序列化方法
public static <T> String objToJson(T obj) { if (obj == null) { return null; } try { return obj instanceof String ? (String)obj : objectMapper.writeValueAsString(obj); } catch (Exception e) { log.warn("obj To json is error", e); return null; } }
三. 封装反序列化方法
public static <T> T json2Object(String json, Class<T> clazz) { if (Str