当前位置: 首页 > news >正文

java springboot 时间格式序列化 UTC8

背景

我们在项目中使用序列化和反序列化组件中,默认一般采用Jackson,如果遇到特殊配置,我们该怎么配置呢,大致有如下两种方式:采用配置文件【application.yml】和代码配置

配置文件

比如添加jackson节点

spring:jackson:date-format: yyyy-MM-dd HH:mm:sstime-zone: GMT+8property-naming-strategy: UPPER_CAMEL_CASEsort-properties-alphabetically: truemapper:ACCEPT_CASE_INSENSITIVE_PROPERTIES: true

属性说明

pring.jackson.date-format指定日期格式,比如yyyy-MM-dd HH:mm:ss,或者具体的格式化类的全限定名
spring.jackson.deserialization是否开启Jackson的反序列化
spring.jackson.generator是否开启json的generators.
spring.jackson.joda-date-time-format指定Joda date/time的格式,比如yyyy-MM-ddHH:mm:ss). 如果没有配置的话,dateformat会作为backup
spring.jackson.locale指定json使用的Locale.
spring.jackson.mapper是否开启Jackson通用的特性.
spring.jackson.parser是否开启jackson的parser特性.
spring.jackson.property-naming-strategy指定PropertyNamingStrategy(CAMEL_CASE_TO_LOWER_CASE_WITH_UNDERSCORES)或者指定PropertyNamingStrategy子类的全限定类名.
spring.jackson.serialization是否开启jackson的序列化.
spring.jackson.serialization-inclusion指定序列化时属性的inclusion方式,具体查看JsonInclude.Include枚举.
spring.jackson.time-zone指定日期格式化时区,比如America/Los_Angeles或者GMT+10.

FeignClient集成

如果我们在项目中使用了FeignClient,可以指定Mapper,同时也可以进行Jackson的通用配置修改

@Configuration
public class FeignConfig {@Beanpublic ObjectMapper jacksonObjectMapper(){ObjectMapper objectMapper = new ObjectMapper();objectMapper.configure(JsonGenerator.Feature.IGNORE_UNKNOWN, true);objectMapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES,false);objectMapper.configure(MapperFeature.ACCEPT_CASE_INSENSITIVE_PROPERTIES,true);return objectMapper;}}

ObjectMapper的设置

ObjectMapper objectMapper = new ObjectMapper();
//去掉默认的时间戳格式     
objectMapper.configure(SerializationFeature.WRITE_DATES_AS_TIMESTAMPS, false);
//设置为东八区
objectMapper.setTimeZone(TimeZone.getTimeZone("GMT+8"));
// 设置输入:禁止把POJO中值为null的字段映射到json字符串中
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("yyyy-MM-dd HH:mm:ss"));
//序列化日期时以timestamps输出,默认true
objectMapper.configure(SerializationFeature.WRITE_DATES_AS_TIMESTAMPS, false);
//序列化枚举是以toString()来输出,默认false,即默认以name()来输出
objectMapper.configure(SerializationFeature.WRITE_ENUMS_USING_TO_STRING,true);
//序列化枚举是以ordinal()来输出,默认false
objectMapper.configure(SerializationFeature.WRITE_ENUMS_USING_INDEX,false);
//类为空时,不要抛异常
objectMapper.configure(SerializationFeature.FAIL_ON_EMPTY_BEANS, false);
//反序列化时,遇到未知属性时是否引起结果失败
objectMapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false);//单引号处理
objectMapper.configure(JsonParser.Feature.ALLOW_SINGLE_QUOTES, true);
//解析器支持解析结束符
objectMapper.configure(JsonParser.Feature.ALLOW_UNQUOTED_CONTROL_CHARS, true);

http://www.lryc.cn/news/155580.html

相关文章:

  • 攻防世界-Get-the-key.txt
  • MyBatisPlus之DQL编程控制
  • 本地使用GFPGAN进行图像人脸修复
  • Linux--进程概念
  • dex2oat编译模式、触发场景、命令强制执行
  • 深度学习 | TCN时间卷积神经网络模型答疑
  • Linux之修改服务端口号
  • LeetCode笔记:Weekly Contest 361
  • Springboot快速搭建Web API项目
  • 数据结构day06(单向循环链表、双向链表)
  • zabbix -- 新建主机
  • =>符号含义
  • Docker+Jenkins(blueocean)+Gitee构建CICD流水线实战
  • Redis快速入门
  • EasyExcel 修改导出的文件属性
  • 电子班牌云平台系统——智慧校园管理工具,多媒体信息发布、走班排课、家校互通、物联控制、教务管理、考勤管理、素质评价、日常办公
  • docker-compose 部署 Seata整合nacos,Postgresql 为DB存储
  • three.js 场景中如何彻底删除模型和性能优化
  • Bridge Champ举办人机对战赛:NFT游戏与传统竞技共生发展编织新格局
  • Visual Studio软件_MSC_VER值(MSVC编译器版本)的获取方法
  • 02-Linux-IO多路复用之select、poll和epoll详解
  • echo、print_r、print、var_dump 、die
  • 【LeetCode75】第四十四题 省份数量
  • 把DTC从Excel导入cdd的方法
  • 养猪废水处理设备的处理方法
  • 【React】React学习:从初级到高级(三)
  • Rest和Http什么关系?
  • leetcode原题: 生存人数
  • K8S的介绍和架构
  • linux信号量