import com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.core.type.TypeReference;
import com.fasterxml.jackson.databind.DeserializationFeature;
import com.fasterxml.jackson.databind.JavaType;
import com.fasterxml.jackson.databind.ObjectMapper;
import java.io.IOException;
import java.text.SimpleDateFormat;
import java.util.List;
import java.util.Map;
public class JSONUtils {
private final static ObjectMapper objectMapper;
private JSONUtils() {
}
static {
objectMapper = new ObjectMapper();
objectMapper.disable(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES);
//-- 配置Jackson返回日期类型格式(默认是日期的毫秒数)
SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
objectMapper.setDateFormat(format);
}
/**
* Description:javaBean,list,array convert to json string
*/
public static String obj2json(Object obj) throws Exception {
return objectMapper.writeValueAsString(obj);
}
/**
* 不抛异常
* by 周忠友
* @param obj
* @return
*/
public static final String obj2Json(Object obj){
try {
return objectMapper.writeValueAsString(obj);
} catch (JsonProcessingException var2) {
var2.printStackTrace();
return "";
}
}
public static final <T> T json2Bean(String jsonStr, Class<T> clazz){
try {
return objectMapper.readValue(jsonStr, clazz);
} catch (IOException var3) {
var3.printStackTrace();
return null;
}
}
public static final <T> T json2Bean(String json, TypeReference<T> valueTypeRef) {
try {
return objectMapper.readValue(json, valueTypeRef);
} catch (IOException var3) {
var3.printStackTrace();
return null;
}
}
public static final <T> T json2Bean(String json, JavaType javaType) {
try {
return objectMapper.readValue(json, javaType);
} catch (IOException var3) {
var3.printStackTrace();
return null;
}
}
/**
* Description:json string convert to javaBean
*/
public static <T> T json2pojo(String jsonStr, Class<T> clazz) throws Exception {
return objectMapper.readValue(jsonStr, clazz);
}
/**
* Description:json string convert to javaBean
*/
public static <T> T json2pojo(String jsonStr, TypeReference<T> typeReference) throws Exception {
return objectMapper.readValue(jsonStr, typeReference);
}
public static <T> T json2pojo(String jsonStr, JavaType javaType) throws Exception {
return objectMapper.readValue(jsonStr, javaType);
}
/**
* Description: json string convert to map
*/
@SuppressWarnings("unchecked")
public static <T> Map<String, Object> json2map(String jsonStr) throws Exception {
return objectMapper.readValue(jsonStr, Map.class);
}
/**
* Description:json string convert to map with javaBean
*/
public static <T> Map<String, T> json2map(String jsonStr, Class<T> clazz) throws Exception {
JavaType javaType = constructParametricType(Map.class, String.class, clazz);
Map<String, T> map = objectMapper.readValue(jsonStr, javaType);
return map;
}
/**
* Description:json array string convert to list with javaBean
*/
public static <T> List<T> json2list(String jsonArrayStr, Class<T> clazz) throws Exception {
if(jsonArrayStr == null || "".equals(jsonArrayStr)){
return null;
}
JavaType javaType = constructParametricType(List.class, clazz);
List<T> list = objectMapper.readValue(jsonArrayStr,javaType);
return list;
}
/**
* Description:map convert to javaBean
*/
public static <T> T map2pojo(@SuppressWarnings("rawtypes") Map map, Class<T> clazz) {
return objectMapper.convertValue(map, clazz);
}
public static JavaType constructParametricType(Class<?> parametrized, Class<?>... parameterClasses) {
return objectMapper.getTypeFactory().constructParametricType(parametrized, parameterClasses);
}
public static JavaType constructParametricType(Class<?> parametrized, JavaType... parameterTypes) {
return objectMapper.getTypeFactory().constructParametricType(parametrized, parameterTypes);
}
public static <T> T convertValue(Object fromValue, JavaType javaType) {
return objectMapper.convertValue(fromValue, javaType);
}
}
版权声明:本文为shiki_41原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。