object类型转为对应对象或对象集合

    技术2022-07-11  96

    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; }
    Processed: 0.011, SQL: 9