百度360必应搜狗淘宝本站头条
当前位置:网站首页 > 技术文章 > 正文

SpringBoot 中 Json 格式化配置(springboot json转对象)

zhezhongyun 2025-07-19 23:59 3 浏览

SpringBoot 针对 jackson 是自动化配置的,如果需要修改,也可以自定义配置。


0x01:通过 application.yml

配置属性说明:


spring.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-dd HH: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。

spring:
  jackson:
  #日期格式化
    date-format: yyyy-MM-dd HH:mm:ss
  serialization:
    #格式化输出 
     indent_output: true
     #忽略无法转换的对象
     fail_on_empty_beans: false
      #设置空如何序列化
     defaultPropertyInclusion: NON_EMPTY
  deserialization:
      #允许对象忽略json中不存在的属性
      fail_on_unknown_properties: false
  parser:
       #允许出现特殊字符和转义符
       allow_unquoted_control_chars: true
        #允许出现单引号
        allow_single_quotes: true


0x02 使用重新注入 ObjectMapper

在配置 bean 中使用下面的配置

@Bean
@Primary
@ConditionalOnMissingBean(ObjectMapper.class)
public ObjectMapper jacksonObjectMapper(Jackson2ObjectMapperBuilder builder)
{
ObjectMapper objectMapper = builder.createXmlMapper(false).build();

// 通过该方法对mapper对象进行设置,所有序列化的对象都将该规则进行序列化
// Include.Include.ALWAYS 默认
// Include.NON_DEFAULT 属性为默认值不序列化
// Include.NON_EMPTY 属性为 空("") 或者为 NULL 都不序列化,则返回的json是没有这个字段的。这样对移动端会更省流量
// Include.NON_NULL 属性为NULL 不序列化

objectMapper.setSerializationInclusion(JsonInclude.Include.NON_EMPTY);
objectMapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false);
// 允许出现特殊字符和转义符
objectMapper.configure(JsonParser.Feature.ALLOW_UNQUOTED_CONTROL_CHARS, true);
// 允许出现单引号
objectMapper.configure(JsonParser.Feature.ALLOW_SINGLE_QUOTES, true);
// 字段保留,将null值转为""
objectMapper.getSerializerProvider().setNullValueSerializer(new JsonSerializer<Object>()
{
@Override
public void serialize(Object o, JsonGenerator jsonGenerator,
SerializerProvider serializerProvider)
throws IOException{
jsonGenerator.writeString("");
}
});
return objectMapper;
}


另外,如果没有进行全局配置。后台编写的接口向前端返回数据时,如果返回的是某个数据库对应的实体类,有可能出现日期类型数据不是 yyyy-MM-dd HH:mm:ss 格式。SpringBoot 提供了 @JsonFormat 注解就可以适用于这种情况。使用方式:加在实体类属上添加该注解

/**
* 创建时间
*/
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
@TableField(value = "create_date")
private Date createDate;

类似功能的注解还有 @DateTimeFormat。

相关推荐

Qt setAttribute设置窗口属性(qt设置窗口名字)

this->resize(500,400);this->setWindowTitle("主窗口");QLabel*label=newQLabel(...

利用Axure+js创建可配置地图页面(axure制作app界面)

编辑导语:如何利用Axure实现自定义地图展示?本篇文章里,作者结合Axure与高德地图,对如何在Axure中设置相应参数、进而预览时实现自定义地图展示效果的操作流程进行了示范和总结,一起来看一下。本...

Excel如何获取所有类型的工作表,详细编程方法介绍

No.1Excel可以创建不同类型的工作表,编程中会遇到返回某一类型的工作或所有类型的工作表,对表进行操作,那么如何得到想要的工作表呢?下面介绍一个方法。首先要认识一下Sheets对象,它表示工作簿中...

VBA中的常用单元格引用方式(vba中单元格的引用方法)

VBA编程经常和“对象”打交道,其中最频繁的对象大概就是“单元格”了。(听说您还没有对象?那……我想你大概需要一份Excel,包邮988……)今天我们就来聊一下单元格的各种引用方式,比如单个单元格、行...

强烈安利试试这个!效果爆炸的漫画变身AI,火到服务器几度挤爆

金磊丰色发自凹非寺量子位报道|公众号QbitAI“排队1241人,等待2600秒……”——这届网友为了看一眼自己在动漫里的样子,可真是拼了!“始作俑者”是一款可以把人像变动漫的生成器。只...

软网推荐:为窗口控制菜单添加扩展控制命令

当我们点击Windows标准窗口(如记事本、资源管理器等)左上角的窗口控制按钮时,会弹出一个含有窗口控制基本命令的菜单,其中包括移动、大小、最小化、最大化、关闭等窗口控制命令。如果我们觉得这些命令不能...

45、VBA字典去重,两种不同的方法在实战中的运用(VBA进阶)

1、在VBA字典去重的操作中,若程序仅需要使用key值,那么无论采用哪种方法都不会有问题;但如果需要获得对应的item值,就必须根据实际需求选择合适的方法了。学VBA要知其然而知其所以然,不能似懂非懂...

Excel VBA学习笔记:合并单元格的相关操作

合并单元格,一个在工作中很常见的,但是是令写(工作表)公式和VBA代码的人都很不喜欢的东东,今天来讲讲与它相关的操作语法。1、Range("A1:B2").Merge;合并A1到B2单...

软网推荐:图片编辑 小而不凡(秽的读法)

说起图片编辑小工具,咱手边就有个“画图”软件。但是,这个工具比较简单,对于处理透明背景、应用滤镜效果、添加边框、做拼接图和全景照、图层操作等,就无能为力了。同样是小软件,PhotoPad就能满足上述需...

Android弹软键盘时之ListView的变化控制

前几天有个人问我,说在最底下有个输入框,弹出键盘时整个界面都一起跟着移动,上面的标题栏都移到上面看不到了,界面非常难看。其实这种问题一般存在于这样的界面布局中那就是,上面是标题栏,中间是Listvie...

如何将数组值传递到工作表中(怎么传数组)

【分享成果,随喜正能量】不与别人盲目攀比,自己就会悠然自得;不把人生目标定得太高,自己就会欢乐常在;不刻意追求完美,自己就会远离痛苦;不是时时苛求自己,自己就会活的自在;不每每吹毛求疵,自己就会轻轻松...

【VBA入门必备】Offset和Resize这样用,工作效率翻3倍!

大家好!今天共同学习下VBA中单元格属性Offset和Resize操作。一、Offset:单元格的"导航仪"功能说明:以当前单元格为坐标原点,灵活跳转位置语法格式:单元格.Offset...

50道阿里巴巴MySql经典面试题(附答案)

1、MySQL中有哪几种锁?1、表级锁:开销小,加锁快;不会出现死锁;锁定力度大,发生锁冲突的概率最高,并发度最低。2、行级锁:开销大,加锁慢;会出现死锁;锁定粒度最小,发生锁冲突的概率最低,并发度...

如何在Vue3项目中集成ESLint+Prettier+Stylelint+Husky?

随着前端工程化的发展,前端代码规范也显得越来越重要,所以作为一个前端对于这方面还是需要有一定的了解的。本篇文章将带大家使用ESLint+Prettier+Stylelint+Husky从零搭建一个Vi...

SpringBoot 中 Json 格式化配置(springboot json转对象)

SpringBoot针对jackson是自动化配置的,如果需要修改,也可以自定义配置。0x01:通过application.yml配置属性说明:spring.jackson.date-form...