Jackson 泛型序列化


代码实现

  • JSON序列化工具类
import com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.core.type.TypeReference;
import com.fasterxml.jackson.databind.ObjectMapper;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import java.util.List;

/**
 * @Description 通用JSON序列化
 * @date Aug 16, 2021
 * @Version 1.0
 */
@Component
public class GenericAndJson {

    private static ObjectMapper mapper;

    /**
     * 注入mapper
     * @param mapper
     */
    @Autowired
    public void setMapper(ObjectMapper mapper) {
        GenericAndJson.mapper = mapper;
    }

    /**
     * Object转JSON
     * @param t
     * @param <T>
     * @return
     */
    public static <T> String objectToJson(T t) {
        try {
            return GenericAndJson.mapper.writeValueAsString(t);
        } catch (JsonProcessingException e) {
            e.printStackTrace();
        }
    }

    /**
     * JSON转Object
     * @param str
     * @param tClass
     * @param <T>
     * @return
     */
    public static <T> T jsonToObject(String str, TypeReference<T> tr) {

        if (StringUtils.isEmpty(str)) {
            return null;
        }

        try {
            return GenericAndJson.mapper.readValue(str, tr);
        } catch (JsonProcessingException e) {
            e.printStackTrace();
        }

    }

    /**
     * JSON转List
     * @param str
     * @param <T>
     * @return
     */
    public static <T> List<T> jsontToList(String str) {
        if (StringUtils.isEmpty(str)) {
            return null;
        }

        try {
            List<T> list = GenericAndJson.mapper.readValue(str, new TypeReference<List<T>>() {
            });
            return list;
        } catch (JsonProcessingException e) {
            e.printStackTrace();
        }

    }

    /**
     * JSON转List
     * @param str
     * @param tTypeReference
     * @param <T>
     * @return
     */
    public static <T> T jsonToList(String str, TypeReference<T> tr) {
        if (StringUtils.isEmpty(str)) {
            return null;
        }

        try {
            T t = GenericAndJson.mapper.readValue(str, tr);
            return t;
        } catch (JsonProcessingException e) {
            e.printStackTrace();
        }
    }

}
  • 调用方法
// JSON转List
List<Spec> specs = GenericAndJson.jsonToList(this.specs, new TypeReference<List<Spec>>() {});

// Object转JSON
String specs = GenericAndJson.objectToJson(specs);

- End -
梦想是咸鱼
关注一下吧
以上为本篇文章的主要内容,希望大家多提意见,如果喜欢记得点个推荐哦
作者:Maggieq8324
本文版权归作者和博客园共有,欢迎转载,转载时保留原作者和文章地址即可。
原文地址:https://www.cnblogs.com/maggieq8324/p/15150652.html