Spring Boot jackson配置使用详解

Spring Boot系列-json框架jackson配置详解

  • T1 - 前言

    目前Java最常见的3中JSON操作框架分别为Gson、Jackson、FastJson,该篇文章主要讲解jackson在SpringBoot环境中各配置项的具体作用。

  • T2 - 环境依赖

    jackson是spring-boot的web/webflux框架默认依赖的json库,要使用SpringBoot的jackson自动化配置只需保证SpringBoot的web/webflux依赖引入。下文配置demo为了方便调试引入了个人的swagger配置框架:

    <dependencies><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency><!-- swagger自动配置依赖,为方便测试 --><dependency><groupId>io.github.wilson-he</groupId><artifactId>swagger2-spring-boot-starter</artifactId></dependency>
    </dependencies>
    
  • T3 - application.yml样例讲解

      spring:jackson:# 设置属性命名策略,对应jackson下PropertyNamingStrategy中的常量值,SNAKE_CASE-返回的json驼峰式转下划线,json body下划线传到后端自动转驼峰式property-naming-strategy: SNAKE_CASE# 全局设置@JsonFormat的格式patterndate-format: yyyy-MM-dd HH:mm:ss# 当地时区locale: zh# 设置全局时区time-zone: GMT+8# 常用,全局设置pojo或被@JsonInclude注解的属性的序列化方式default-property-inclusion: NON_NULL #不为空的属性才会序列化,具体属性可看JsonInclude.Include# 常规默认,枚举类SerializationFeature中的枚举属性为key,值为boolean设置jackson序列化特性,具体key请看SerializationFeature源码serialization:WRITE_DATES_AS_TIMESTAMPS: true # 返回的java.util.date转换成timestampFAIL_ON_EMPTY_BEANS: true # 对象为空时是否报错,默认true# 枚举类DeserializationFeature中的枚举属性为key,值为boolean设置jackson反序列化特性,具体key请看DeserializationFeature源码deserialization:# 常用,json中含pojo不存在属性时是否失败报错,默认trueFAIL_ON_UNKNOWN_PROPERTIES: false# 枚举类MapperFeature中的枚举属性为key,值为boolean设置jackson ObjectMapper特性# ObjectMapper在jackson中负责json的读写、json与pojo的互转、json tree的互转,具体特性请看MapperFeature,常规默认即可mapper:# 使用getter取代setter探测属性,如类中含getName()但不包含name属性与setName(),传输的vo json格式模板中依旧含name属性USE_GETTERS_AS_SETTERS: true #默认false# 枚举类JsonParser.Feature枚举类中的枚举属性为key,值为boolean设置jackson JsonParser特性# JsonParser在jackson中负责json内容的读取,具体特性请看JsonParser.Feature,一般无需设置默认即可parser:ALLOW_SINGLE_QUOTES: true # 是否允许出现单引号,默认false# 枚举类JsonGenerator.Feature枚举类中的枚举属性为key,值为boolean设置jackson JsonGenerator特性,一般无需设置默认即可# JsonGenerator在jackson中负责编写json内容,具体特性请看JsonGenerator.Featureswagger:enabled: truedocket:base-package: io.github
    
  • T4 - 测试样例

    application.yml

      spring:jackson:# 常用请求与响应自动转下划线,空值字段不传输property-naming-strategy: SNAKE_CASEdefault-property-inclusion: non_nullswagger:docket:base-package: io.github.jacksonenabled: true
    

    CompanyVO.java

      /*** CompanyVO*/@Data@Accessors(chain = true)public class CompanyVO {private String companyName;@JsonFormatprivate Date createTime;private Integer employeeNum;}
    

    CompanyController.java

      @RestController@RequestMapping("/company")@Apipublic class CompanyController {@Resourceprivate ObjectMapper objectMapper;@PostMapping("/")public CompanyVO post(@RequestBody CompanyVO vo) {return vo;}@GetMapping("/")public String objectToJson() throws JsonProcessingException {// 使用jackson的objectMapper将对象根据SNAKE_CASE策略转成json字符串return objectMapper.writeValueAsString(new CompanyVO().setCompanyName("company").setEmployeeNum(11));}}
    

    样例测试效果图:

    • 请求参数需传下划线,驼峰式无效(阿里、微信等大部分接口都是以下滑线传参,所以个人推荐使用SNAKE_CASE策略)
      parameters

    • 响应结果转下划线,空属性不转json(不传employeeNum)
      lack-employeeNum

    • Spring容器jackson的ObjectMapper将对象转json时根据SNAKE_CASE策略,当要把对象转成json字符串请求第三方接口或以对象接收第三方接口参数时就无需考虑下划线适配转换的问题了
      objectMapper-json

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/556417.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

oracle字段序列自增长,ORACLE序列(字段自增长)

序列:是oacle提供的用于产生一系列唯一数字的数据库对象。 自动提供唯一的数值 共享对象 主要用于提供主键值 将序列值装入内存可以提高访问效率创建序列&#xff1a;1、 要有创建序列的权限 create sequence 或 create any sequence2、 创建序列的语法CREATE SEQUENCE seque…

频率统计表用c语言_空间矢量脉宽调制建模与仿真(基于C语言的SIMULINK仿真模型 | 基于SVPWM模块的仿真)...

文末有仿真模型下载方式1.1 基于C语言的SIMULINK仿真模型使用C语言在MATLAB/SIMULINK中仿真&#xff0c;需要借助s-function builder模块实现。七段式SVPWM仿真模型如图1-1所示。仿真解算器&#xff08;Solver&#xff09;选择变步长&#xff08;Variable-step&#xff09;、od…

pythonrandom库seed_Python

Python seed() 函数 描述 seed() 方法改变随机数生成器的种子&#xff0c;可以在调用其他随机模块函数之前调用此函数。 语法 以下是 seed() 方法的语法: import random random.seed ( [x] ) 我们调用 random.random() 生成随机数时&#xff0c;每一次生成的数都是随机的。但是…

php基本语法 格式,PHP 基本语法格式

PHP 基本语法格式标准代码如下:复制代码 代码如下:...?>短标签模式(此模式需要修改PHP配置&#xff0c;让PHP支持短标签模式)&#xff1a;复制代码 代码如下:...?>注释&#xff1a;复制代码 代码如下:/* ...*///#时间&#xff1a; 2009-12-14Abs: 取得绝对值. Acos: 取…

spring @Primary-在spring中的使用

在spring 中使用注解&#xff0c;常使用Autowired&#xff0c; 默认是根据类型Type来自动注入的。但有些特殊情况&#xff0c;对同一个接口&#xff0c;可能会有几种不同的实现类&#xff0c;而默认只会采取其中一种的情况下 Primary 的作用就出来了。下面是个简单的使用例子。…

php获取手机的mac地址,Android手机获取Mac地址的方法

[导读]这篇文章主要为大家详细介绍了Android手机获取Mac地址的方法&#xff0c;具有一定的参考价值最常用的方法,通过WiFiManager获取&#xff1a;/*** 通过WiFiManager获取mac地址* param context* return*/private static String tryGetWifiMac(Context context) {WifiManage…

python使用蓝牙功能_python bluetooth蓝牙信息获取蓝牙设备类型的方法

python 获取蓝牙设备类型 扫描蓝牙设备获取到的信息中&#xff0c;无法判断扫描到的蓝牙设备属于什么类型的设备。 扫描蓝牙信息使用的是python 里面的bluetooth模块。 首先扫描出来的是这样的信息 (74:60:FA:FD:FC:49,HUAWEI P30,5898764) 可根据5898764来判断是什么蓝牙设备。…

MySQL建表字段长度的限制、汉字和字母占字节数

varchar(N)&#xff0c;N指的是最大字符数&#xff0c;不是字节数。 记住&#xff1a; &#xff08;1&#xff09;MySQL要求一个行的定义长度不能超过65535。 &#xff08;2&#xff09;单个字段如果大于65535&#xff0c;则转换为TEXT 。 &#xff08;3&#xff09;单行最…

linux 服务器启用端口,linux服务器放行端口

一、默认使用iptables的系统(例如centos6)1、关闭所有的 INPUT FORWARD OUTPUT 只对某些端口开放。下面是命令实现&#xff1a;iptables -P INPUT DROPiptables -P FORWARD DROPiptables -P OUTPUT DROP再用命令iptables -L -n查看 是否设置好&#xff0c; 好看到全部 DROP 了这…

python3 xpath_Python 3中用XPath解析XML

我有以下xml&#xff1a;Biscuits Wrapped Finished Biscuits Biscuits (Wrapped)Biscuits Sweet Finished Biscuits Biscuits (Sweets)Biscuits Savoury Finished Biscuits Biscuits For Cheese....我已使用以下代码将其加载到树中&#xff1a;try: groups etree.parse(PRODU…

MySQL 无符号和有符号的区别

随笔记录: mysql无符号和有符号的区别 无符号unsigned 表示设置的的数据为0或者正数&#xff1b; 有符号则可以是负数 -&#xff1b; 内存占比 有符号 0-255 无符号 -127~127

linux下tomcat启动后无进程,Linux中Tomcat shutdown.sh后进程仍然存在解决办法

最近我们在使用Jenkins自动化部署项目时&#xff0c;在生产liunx环境下&#xff0c;使用脚本shutdown.sh停止tomcat服务&#xff0c;然后再start之后发现应用无法访问了&#xff0c;后台查看tomcat进程是发现有个2个tomcat进程&#xff0c;说明之前的shutdown并没有完全停掉tom…

扫地机器人电路原理图_扫地机有这一台就够了:石头扫地机器人T6 首拆

听说集齐13台扫地机器人可以召唤扫地机神兽&#xff0c;所以集齐了22台扫地机后我的神兽呢&#xff1f;自从上个月入手了石头科技出品的小瓦青春版扫地机之后已经集齐了所有小米(石头)系扫地机。小瓦青春版是一款无序清洁的扫地机产品&#xff0c;也是石头科技价格最低的入门级…

让我放弃FastDFS拥抱MinIO的8个瞬间

目前可用于文件存储的网络服务选择有很多&#xff0c;比如阿里云OSS、七牛云、腾讯云等等&#xff0c;但是收费都有点小贵。为了帮公司节约成本&#xff0c;之前一直是使用fastDFS作为文件服务器&#xff0c;准确的说是图片服务器。直到我发现了MinIO&#xff0c;我决定放弃Fas…

linux内核+红黑树删除,关于linux:Linux内核红黑树原理概括

二叉查找树因为在频繁的动静更新过程中&#xff0c;可能会呈现树的高度远大于 log2n的状况&#xff0c;所以就会导致各个操作效率降落&#xff0c;最坏的状况下就会进化为链表&#xff0c;变为O(n)&#xff0e;很显著&#xff0c;想要解决这个问题&#xff0c;无效的一种方法就…

http 和 https_Golang设置https访问,以及http如何重定向到https

设置https访问&#xff1a;初始代码为http监听&#xff1a;func main() { server : &http.Server{ Addr: ":8080", ... } go func() { if err : server.ListenAndServe(); err ! nil && err ! http.ErrServerClosed { log.Fa…

盘点分布式文件存储系统____分布式文件存储系统简介

盘点分布式文件存储系统 在项目的数据存储中&#xff0c;结构化数据通常采用关系型数据库&#xff0c;非结构化数据&#xff08;文件&#xff09;的存储就有很多种方式&#xff0c;服务器本地存储、Nas挂载、ftp等等&#xff0c;今天就来盘点一下&#xff0c;分布式文件存储系统…

linux 64 32 编译支持,在64位linux上编译32位程序 for i386 intel

编辑中# ld -VGNU ld version 2.15.92.0.2 20040927Supported emulations:elf_x86_64elf_i386i386linux#ld -m elf_i386Along with the -m32 flag in gcc, you may need to include the -melf_i386 flag for ld to properly link the 32bit objectfiles to the 32bit libraries…

linux ortp 编译,Linux下oSIP的编译使用应该是很简单的,其Install说明文档.doc

Linux下oSIP的编译使用应该是很简单的,其Install说明文档.docLinux下oSIP的编译使用应该是很简单的&#xff0c;其Install说明文档里也介绍的比较清楚&#xff0c;本文主要就oSIP在Windows平台下VC 6.0开发环境下的使用作出描述。  虽然oSIP的开发人员也说明了&#xff0c;oS…