You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
111 lines
3.3 KiB
111 lines
3.3 KiB
package com.qs.serve.common.util;
|
|
|
|
import com.alibaba.fastjson.JSON;
|
|
import com.alibaba.fastjson.JSONObject;
|
|
import com.alibaba.fastjson.serializer.SerializeConfig;
|
|
import com.alibaba.fastjson.serializer.SimpleDateFormatSerializer;
|
|
import com.alibaba.fastjson.support.config.FastJsonConfig;
|
|
import com.fasterxml.jackson.annotation.JsonInclude;
|
|
import com.fasterxml.jackson.core.JsonProcessingException;
|
|
import com.fasterxml.jackson.databind.JavaType;
|
|
import com.fasterxml.jackson.databind.MapperFeature;
|
|
import com.fasterxml.jackson.databind.ObjectMapper;
|
|
import com.fasterxml.jackson.datatype.jsr310.JavaTimeModule;
|
|
import com.qs.serve.common.framework.interceptor.LocalDateTimeFormatSerializer;
|
|
import lombok.experimental.UtilityClass;
|
|
|
|
import java.time.LocalDateTime;
|
|
import java.util.ArrayList;
|
|
import java.util.List;
|
|
import java.util.Map;
|
|
|
|
|
|
/**
|
|
* Jackson json序列化和反序列化工具类
|
|
* @Author JcYen
|
|
* @Date 2019/6/3
|
|
* @Version 1.0
|
|
*/
|
|
@UtilityClass
|
|
public class JsonUtil {
|
|
|
|
/**
|
|
* jackson对象
|
|
*/
|
|
static final ObjectMapper MAPPER = new ObjectMapper();
|
|
|
|
static {
|
|
MAPPER.configure(MapperFeature.ACCEPT_CASE_INSENSITIVE_PROPERTIES, true);
|
|
MAPPER.setSerializationInclusion(JsonInclude.Include.NON_NULL);
|
|
MAPPER.registerModule(new JavaTimeModule());
|
|
}
|
|
|
|
/**
|
|
* 将对象转换成json字符串。
|
|
*/
|
|
public static String objectToJson(Object data) {
|
|
try {
|
|
String string = MAPPER.writeValueAsString(data);
|
|
return string;
|
|
} catch (JsonProcessingException e) {
|
|
e.printStackTrace();
|
|
}
|
|
return null;
|
|
}
|
|
|
|
|
|
/**
|
|
* 将json结果集转化为对象
|
|
*
|
|
* @param jsonData json数据
|
|
* @param beanType 对象中的object类型
|
|
*/
|
|
public static <T> T jsonToPojo(String jsonData, Class<T> beanType) {
|
|
try {
|
|
T t = MAPPER.readValue(jsonData, beanType);
|
|
return t;
|
|
} catch (Exception e) {
|
|
e.printStackTrace();
|
|
}
|
|
return null;
|
|
}
|
|
|
|
/**
|
|
* 将json数据转换成pojo对象list
|
|
*/
|
|
public static <T> List<T> jsonToList(String jsonData, Class<T> beanType) {
|
|
JavaType javaType = MAPPER.getTypeFactory().constructParametricType(List.class, beanType);
|
|
try {
|
|
List<T> list = MAPPER.readValue(jsonData, javaType);
|
|
return list;
|
|
} catch (Exception e) {
|
|
e.printStackTrace();
|
|
}
|
|
return null;
|
|
}
|
|
|
|
public static Map<String, Object> jsonToMap(String jsonStr){
|
|
Map<String, Object> json = JSONObject.parseObject(jsonStr, Map.class);
|
|
return json;
|
|
}
|
|
|
|
public static Map<String,Object> objectToMap(Object object){
|
|
// 创建SerializeConfig对象,并设置日期时间的格式
|
|
SerializeConfig config = new SerializeConfig();
|
|
LocalDateTimeFormatSerializer dateFormatSerializer = new LocalDateTimeFormatSerializer();
|
|
config.put(LocalDateTime.class, dateFormatSerializer);
|
|
String jsonString = JSON.toJSONString(object, config);
|
|
Map<String,Object> map = JSONObject.parseObject(jsonString);
|
|
return map;
|
|
}
|
|
|
|
public static <T> List<Map<String,Object>> listToMap(List<T> objects){
|
|
List<Map<String,Object>> result = new ArrayList<>();
|
|
for (T object : objects) {
|
|
Map<String,Object> map = objectToMap(object);
|
|
result.add(map);
|
|
}
|
|
return result;
|
|
}
|
|
|
|
}
|
|
|