public class JacksonUtils {
public static final Logger logger = LoggerFactory.getLogger(JacksonUtils.class);
private static final String DEFAULT_DATE_FORMAT = "yyyy-MM-dd HH:mm:ss";
private static final ObjectMapper objectMapper;
private JacksonUtils() {
}
static {
objectMapper = new ObjectMapper();
//去掉默认的时间戳格式
objectMapper.configure(SerializationFeature.WRITE_DATES_AS_TIMESTAMPS, false);
//设置为中国上海时区
objectMapper.setTimeZone(TimeZone.getTimeZone("GMT+8"));
objectMapper.configure(SerializationFeature.WRITE_NULL_MAP_VALUES, false);
//空值不序列化
objectMapper.setSerializationInclusion(JsonInclude.Include.NON_NULL);
//反序列化时,属性不存在的兼容处理
objectMapper.getDeserializationConfig().withoutFeatures(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES);
//序列化时,日期的统一格式
objectMapper.setDateFormat(new SimpleDateFormat(DEFAULT_DATE_FORMAT));
objectMapper.configure(SerializationFeature.FAIL_ON_EMPTY_BEANS, false);
objectMapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false);
//单引号处理
objectMapper.configure(com.fasterxml.jackson.core.JsonParser.Feature.ALLOW_SINGLE_QUOTES, true);
}
/**
* 实体Bean序列化JSON字符
*
* @param entity
* @return json字符串
*/
public static <T> String toJson(T entity) {
try {
return objectMapper.writeValueAsString(entity);
} catch (JsonGenerationException e) {
logger.error(e.getMessage(), e);
} catch (JsonMappingException e) {
logger.error(e.getMessage(), e);
} catch (IOException e) {
logger.error(e.getMessage(), e);
}
return null;
}
/**
* JSON字符串反序列化为JavaBean
*
* @param jsonStr
* @param clazz
* @return Bean对象
*/
public static <T> T json2Bean(String jsonStr, Class<T> clazz) {
try {
if(StringUtils.isNotBlank(jsonStr)) {
return objectMapper.readValue(jsonStr, clazz);
}
} catch (Exception e) {
logger.error(e.getMessage(), e);
}
return null;
}
/**
* JSON字符串反序列化为集合List
*
* @param jsonArrayStr
* @param clazz
* @return 集合List
*/
public static <T> List<T> json2List(String jsonArrayStr, Class<T> clazz){
try {
if(StringUtils.isNotBlank(jsonArrayStr)) {
JavaType javaType = getCollectionType(ArrayList.class, clazz);
return (List<T>) objectMapper.readValue(jsonArrayStr, javaType);
}
}catch (Exception e){
logger.error(e.getMessage(),e);
}
return null;
}
private static JavaType getCollectionType(Class<?> collectionClass, Class<?>... elementClasses) {
return objectMapper.getTypeFactory().constructParametricType(collectionClass, elementClasses);
}
}
记录json工具包
最新推荐文章于 2024-07-22 14:15:06 发布