import com.fasterxml.jackson.core.type.TypeReference;
import com.fasterxml.jackson.databind.ObjectMapper;
import java.io.IOException;
/**
* 通用的全局JSON处理工具类
*
* @version $Id$
*/
public class JsonUtils {
private static ObjectMapper objectMapper = new ObjectMapper();
static {
objectMapper = ObjectMapperBuilder.newBuilder()
.withDefaultOptions()
.withDateTimeModule()
.build();
}
public static ObjectMapper getGlobalObjectMapper() {
return objectMapper;
}
/**
* 把对象转为json字符串
*
* @param obj 要转换的对象 可以为null
* @return
*/
public static String toJson(Object obj) {
try {
return objectMapper.writeValueAsString(obj);
} catch (IOException e) {
throw new RuntimeException(e);
}
}
/**
* 把json字符串转为对象
*
* @param json 要转换的字符串
* @param cls 目标实例类名
* @param <T>
* @return
*/
public static <T> T toBean(String json, Class<T> cls) {
try {
return (T) objectMapper.readValue(json, cls);
} catch (Exception e) {
throw new RuntimeException(e);
}
}
/**
* 把json字符串转为对象,给定类型信息
*
* @param json 要装换的字符串
* @param typeReference 类型引用
* @param <T>
* @return
*/
public static <T> T toBean(String json, TypeReference typeReference) {
try {
return (T) objectMapper.readValue(json, typeReference);
} catch (IOException e) {
throw new RuntimeException(e);
}
}
}