maven依赖
<!--JSON处理器-->
<dependency>
<groupId>com.fasterxml.jackson.module</groupId>
<artifactId>jackson-modules-java8</artifactId>
<version>${jackson.modules}</version>
<type>pom</type>
<scope>import</scope>
</dependency>
工具类
package com.cuslink.common.util;
import com.fasterxml.jackson.databind.JavaType;
import com.fasterxml.jackson.databind.ObjectMapper;
import lombok.extern.slf4j.Slf4j;
import java.util.ArrayList;
import java.util.List;
@Slf4j
public class TypeReferenceUtils {
// Mapper instances are fully thread-safe provided
// that ALL configuration of the instance occurs
// before ANY read or write calls
private static final ObjectMapper mapper = new ObjectMapper();
public static ObjectMapper getInstance() {
return mapper;
}
private TypeReferenceUtils() {}
public static <T> T jsonToObject(Object object, Class<T> clazz) {
T t = mapper.convertValue(object, clazz);
return t;
}
public static <T> List<T> jsonArrayToObjectList(Object object, Class<T> clazz) {
JavaType javaType = getCollectionType(ArrayList.class, clazz);
List<T> t = mapper.convertValue(object, javaType);
return t;
}
public static JavaType getCollectionType(Class<?> collectionClass, Class<?>... elementClasses) {
return mapper.getTypeFactory().constructParametricType(collectionClass, elementClasses);
}
}
实现例子
try {
subArticleDto = TypeReferenceUtils.jsonToObject(value, TblSubArticleDto.class);
} catch (Exception e) {
if (log.isInfoEnabled()) {
log.info("文章 {} 段落 {} 子文章参数转换错误", articleId, sectionDto.getId(), e);
}
return null;
}