Jackson通用工具类
2024-09-08 16:12:00
compile group: 'com.fasterxml.jackson.core', name: 'jackson-core', version: '2.11.1'
compile group: 'com.fasterxml.jackson.core', name: 'jackson-databind', version: '2.11.1'
import com.fasterxml.jackson.annotation.JsonInclude;
import com.fasterxml.jackson.core.JsonGenerator;
import com.fasterxml.jackson.core.JsonParser;
import com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.core.type.TypeReference;
import com.fasterxml.jackson.databind.*;
import com.fasterxml.jackson.datatype.jsr310.JavaTimeModule;
import lombok.SneakyThrows;
import lombok.extern.slf4j.Slf4j;
import java.io.IOException;
import java.time.Instant;
import java.time.ZoneId;
import java.time.ZonedDateTime;
@Slf4j
public class Json {
private static ObjectMapper MAPPER;
static {
JavaTimeModule javaTimeModule = new JavaTimeModule();
javaTimeModule.addSerializer(ZonedDateTime.class, new JsonSerializer<ZonedDateTime>() {
@Override
public void serialize(ZonedDateTime value, JsonGenerator gen, SerializerProvider serializers)
throws IOException {
gen.writeNumber(value.toInstant().toEpochMilli());
}
});
javaTimeModule.addDeserializer(ZonedDateTime.class, new JsonDeserializer<ZonedDateTime>() {
@Override
public ZonedDateTime deserialize(JsonParser p, DeserializationContext ctxt)
throws IOException, JsonProcessingException {
return ZonedDateTime.ofInstant(Instant.ofEpochMilli(p.readValueAs(Long.class)), ZoneId.systemDefault());
}
});
ObjectMapper objectMapper = new ObjectMapper();
objectMapper.setDefaultPropertyInclusion(JsonInclude.Include.NON_NULL);
objectMapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES,false);
objectMapper.registerModule(javaTimeModule);
MAPPER = objectMapper;
}
public static ObjectMapper getMapper() {
return MAPPER;
}
@SneakyThrows
public static String toJson(Object object) {
return MAPPER.writeValueAsString(object);
}
@SneakyThrows
public static <T> T toObject(String json, Class<T> clazz) {
return MAPPER.readValue(json, clazz);
}
public static <T> T toObject(Object object, Class<T> clazz) {
return MAPPER.convertValue(object, clazz);
}
@SneakyThrows
public static <T> T toObject(String json, TypeReference<T> type) {
return MAPPER.readValue(json, type);
}
public static <T> T toObject(Object object, TypeReference<T> type) {
return MAPPER.convertValue(object, type);
}
}
最新文章
- 设置NotePad++设置";不打开上次关闭的文件";
- CSS基本知识5-CSS对齐
- BZOJ 3156 防御准备
- NSISの堆栈操作
- PDT已有很大改进
- Unity3D开发之NGUI点击事件穿透响应处理
- weblogic 日志介绍
- ueditor的过滤、转义、格式丢失问题
- Delphi 写日志的类
- C++学习笔记29,引用变量(1)
- Python自动化开发-基础语法
- Integer的自动拆箱
- leetcode每日刷题计划-简单篇day7
- 第8章 IO库 自我综合练习
- PS提亮户外儿童照
- Confluence 6 数据库和临时目录
- Docker Nginx 配置多个子域名
- centos7安装部署mysql5.7服务器
- QtGUI Module&#39;s Classes
- flask学习(五):使用配置文件