序列化工具 专门用来处理一些需要序列化的对象

  1 import com.fasterxml.jackson.annotation.JsonInclude;
  2 import com.fasterxml.jackson.core.JsonProcessingException;
  3 import com.fasterxml.jackson.databind.DeserializationFeature;
  4 import com.fasterxml.jackson.databind.JavaType;
  5 import com.fasterxml.jackson.databind.ObjectMapper;
  6 import com.fasterxml.jackson.databind.SerializationFeature;
  7 import org.apache.commons.lang3.StringUtils;
  8 import org.slf4j.LoggerFactory;
  9 import org.springframework.beans.factory.InitializingBean;
 10 import org.springframework.beans.factory.annotation.Autowired;
 11 import org.springframework.stereotype.Component;
 12 
 13 import java.io.IOException;
 14 import java.text.DateFormat;
 15 import java.text.SimpleDateFormat;
 16 import java.util.ArrayList;
 17 import java.util.HashMap;
 18 
 19 /**
 20  * jackson 序列化列。
 21  */
 22 @Component
 23 public class JsonUtils implements InitializingBean {
 24 
 25     @Autowired
 26     private ObjectMapper jacksonObjectMapper;
 27 
 28     public static final String DEFAULT_DATE_FORMAT = "yyyy-MM-dd HH:mm:ss";
 29     private static org.slf4j.Logger logger = LoggerFactory.getLogger(JsonUtils.class);
 30     private static final DateFormat defalultSdf = new SimpleDateFormat(DEFAULT_DATE_FORMAT);
 31 
 32     private static ObjectMapper objectMapper;
 33 
 34     static {
 35         objectMapper = new ObjectMapper();
 36         objectMapper.setDateFormat(defalultSdf);
 37         objectMapper.setSerializationInclusion(JsonInclude.Include.NON_NULL);
 38         objectMapper.configure(SerializationFeature.ORDER_MAP_ENTRIES_BY_KEYS, true);
 39         objectMapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false);
 40     }
 41 
 42 
 43     public static ObjectMapper getObjectMapper() {
 44         return objectMapper;
 45     }
 46 
 47 
 48     public static JavaType getHashMapType(Class<?> keyCls, Class<?> valCls) {
 49         return objectMapper.getTypeFactory().constructParametricType(HashMap.class, keyCls, valCls);
 50     }
 51 
 52     public static JavaType getCollectionType(Class<?> collectionClass, Class<?>... elementClasses) {
 53         return objectMapper.getTypeFactory().constructParametricType(collectionClass, elementClasses);
 54     }
 55 
 56     /**
 57      * 序列化为一个Map
 58      *
 59      * @param src    String文本
 60      * @param keyCls Map key 类型。
 61      * @param valCls Map Value 类型。
 62      * @param <T>
 63      * @return
 64      */
 65     public static <T> T fromStringAsMap(String src, Class<?> keyCls, Class<?> valCls) {
 66         JavaType javaType = getHashMapType(keyCls, valCls);
 67         return fromString(src, javaType);
 68     }
 69 
 70     /**
 71      * 序列化一个泛型List
 72      *
 73      * @param src    String文本
 74      * @param valCls List value 类型。
 75      */
 76     public static <T> T fromStringAsList(String src, Class<?> valCls) {
 77         JavaType javaType = getCollectionType(ArrayList.class, valCls);
 78         return fromString(src, javaType);
 79     }
 80 
 81     public static <T> T fromString(String src, JavaType t) {
 82 
 83         if (StringUtils.isBlank(src)) {
 84             return null;
 85         }
 86 
 87         try {
 88             return objectMapper.readValue(src, t);
 89         } catch (IOException e) {
 90             logger.error("parse json err . ", e.getMessage());
 91         }
 92 
 93         return null;
 94     }
 95 
 96     public static <T> T fromString(String src, Class<T> t) {
 97 
 98         if (StringUtils.isBlank(src)) {
 99             return null;
100         }
101 
102         try {
103 
104             T object = objectMapper.readValue(src, t);
105             return object;
106 
107         } catch (IOException e) {
108             logger.error("write json err . ", e.getMessage());
109         }
110 
111         return null;
112     }
113 
114 
115     public static <T> String toString(T t) {
116 
117         if (t == null) {
118             return "";
119         }
120 
121         try {
122             return objectMapper.writeValueAsString(t);
123         } catch (JsonProcessingException e) {
124             logger.error("write json err . ", e.getMessage());
125         }
126 
127         return "";
128     }
129 
130     @Override
131     public void afterPropertiesSet() {
132         //spring 配置覆盖默认
133         objectMapper = jacksonObjectMapper;
134 
135     }
136 }

 

posted @ 2020-05-13 13:49  石头三  阅读(183)  评论(0编辑  收藏  举报