package com.ding.util;
import com.fasterxml.jackson.annotation.JsonInclude;
import com.fasterxml.jackson.databind.DeserializationFeature;
import com.fasterxml.jackson.databind.JavaType;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.fasterxml.jackson.databind.type.MapLikeType;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import java.io.IOException;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
/**
* JSON工具类
*/
public class JSONUtils {
private static final Logger logger = LoggerFactory.getLogger(JSONUtils.class);
private static final ObjectMapper objectMapper = new ObjectMapper();
static {
// 设置null时候不序列化(只针对对象属性)
objectMapper.setSerializationInclusion(JsonInclude.Include.NON_NULL);
// 反序列化时,属性不存在的兼容处理
objectMapper.getDeserializationConfig().withoutFeatures(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES);
// 单引号处理
objectMapper.configure(JsonParser.Feature.ALLOW_SINGLE_QUOTES, true);
//序列化时候统一日期格式
objectMapper.setDateFormat(new SimpleDateFormat(DateUtil.FORMAT_DATE_DEFAULT));
}
/**
* 将Java对象转为JSON字符串
*
* <p>
* JSONUtils.convertObjectToJSON(object)
*
* @param obj
* @param <T>
* @return
*/
public static <T> String convertObjectToJSON(T obj) {
String jsonStr;
try {
jsonStr = objectMapper.writeValueAsString(obj);
} catch (Exception e) {
logger.error(">>>>>> Java对象转为JSON错误:", e);
throw new RuntimeException(e);
}
return jsonStr;
}
/**
* 将JSON字符串转为Java对象
*
* <p>
* JSONUtils.convertJSONToObject("123456789", ResultBean.class)
*
* @param json
* @param type
* @param <T>
* @return
*/
public static <T> T convertJSONToObject(String json, Class<T> type) {
T obj;
try {
obj = objectMapper.readValue(json, type);
} catch (Exception e) {
logger.error(">>>>>> JSON转为Java对象错误:", e);
throw new RuntimeException(e);
}
return obj;
}
/**
* 将JSON转成相应的List
*
* @param jsonStr
* @return
*/
public static List convertJSONToList(String jsonStr) {
JavaType javaType = JSONUtil.objectMapper.getTypeFactory().constructCollectionType(ArrayList.class, Object.class);
try {
return objectMapper.readValue(jsonStr, javaType);
} catch (IOException e) {
logger.error(">>>>>> JSON转为相应的List错误:", e);
}
return null;
}
/**
* 将JSON转成相应的Map
*
* @param jsonStr
* @return
*/
public static Map<String, Object> convertJSONToMap(String jsonStr) {
MapLikeType mapLikeType = JSONUtil.objectMapper.getTypeFactory().constructMapLikeType(HashMap.class, String.class, Object.class);
try {
return objectMapper.readValue(jsonStr, mapLikeType);
} catch (IOException e) {
logger.error(">>>>>> JSON转为相应的Map错误:", e);
}
return null;
}
}
JSONUtils
最新推荐文章于 2021-12-29 13:32:50 发布