Jackson简介
Jackson是一个简单基于Java的应用库,可以将Java对象转化为json对象、json字符串和xml文档,同样也可以将json、xml转化为Java对象。简单易用性能也相对较高。
依赖的jar
Maven依赖
<dependency>
<groupId>org.codehaus.jackson</groupId>
<artifactId>jackson-core-asl</artifactId>
<version>1.9.13</version>
</dependency>
<dependency>
<groupId>org.codehaus.jackson</groupId>
<artifactId>jackson-mapper-asl</artifactId>
<version>1.9.13</version>
</dependency>
工具类讲解
- ObjectMapper对象初始化
private static ObjectMapper objectMapper = new ObjectMapper();
static {
//序列化所有的字段
objectMapper.setSerializationInclusion(JsonSerialize.Inclusion.ALWAYS);
//序列化日期为指定格式
objectMapper.setDateFormat(new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"));
//取消默认转化Timestamp形式
objectMapper.configure(SerializationConfig.Feature.WRITE_DATES_AS_TIMESTAMPS, false);
//忽略空bean转化json的错误
objectMapper.configure(SerializationConfig.Feature.FAIL_ON_EMPTY_BEANS, false);
//忽略,json字符串中存在但bean中不存在的属性
objectMapper.configure(DeserializationConfig.Feature.FAIL_ON_UNKNOWN_PROPERTIES, false);
}
- Json字符串转化为Java对象
public static <T> T str2Obj(String str, TypeReference<T> typeReference) {
if (StringUtils.isBlank(str) || typeReference == null) {
return null;
}
try {
return (T) (typeReference.getType().equals(String.class) ?
str : objectMapper.readValue(str, typeReference));
} catch (IOException e) {
log.error("String To Object Fail,error:", e);
return null;
}
}
- Java对象转化为Json字符串
public static <T> String obj2Str(T object) {
if (object == null) {
return null;
}
try {
return object instanceof String ? (String) object : objectMapper.writeValueAsString(object);
} catch (IOException e) {
log.error("Object To String Fail,error:", e);
return null;
}
}
- Json字符串转化为集合对象
public static <T> T str2Obj(String str, Class<?> collectionClass, Class<?>... elementClasses) {
JavaType javaType = objectMapper.getTypeFactory()
.constructParametricType(collectionClass, elementClasses);
try {
return objectMapper.readValue(str, javaType);
} catch (IOException e) {
log.error("String To Object Fail,error:", e);
return null;
}
}
参考资料:
https://www.yiibai.com/jackson/