【Spring Boot丨(11 )】json的集成

news2024/12/27 22:30:50

集成JSON

  • 概述
    • Jackson
    • Gson
    • JSON-B

在这里插入图片描述

主页传送门:📀 传送

概述


Spring boot 提供了三种json库的集成:

  • Gson
  • Jackson
  • JSON-B

上述三种库提供了将Java对象转换为JSON字符串以及将JSON字符串转换为Java对象的功能。
其中Jackson 是 Spring Boot 官方的首选推荐和默认库。

Jackson


  Spring Boot 提供了 Jackson的自动配置,并且Jacksonspring-boot-starter-json 的一部分。当 Jackson 在类路径上时,会自动配置 ObjectMapper bean

自定义配置属性:

ObjectMapper具有以下自定义属性:

  • MapperFeature.DEFAULT_VIEW_INCLUSION 被禁用

  • DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES 被禁用

  • SerializationFeature.WRITE_DATES_AS_TIMESTAMPS 被禁用

  Spring Boot 还有一些功能可以更轻松地自定义此行为。使用环境配置ObjectMapper和XmlMapper实例。 Jackson

供了一套广泛的开/关功能,可用于配置其处理的各个方面。这些特征在六个枚举(Jackson中)中进行了描述,这些枚举映射到

环境中的属性如下:

枚举属性
com.fasterxml.jackson.databind.DeserializationFeaturespring.jackson.deserialization.<feature_name>true,false
com.fasterxml.jackson.core.JsonGenerator.Featurespring.jackson.generator.<feature_name>true,false
com.fasterxml.jackson.databind.MapperFeaturespring.jackson.mapper.<feature_name>true,false
com.fasterxml.jackson.core.JsonParser.Featurespring.jackson.parser.<feature_name>true,false
com.fasterxml.jackson.databind.SerializationFeaturespring.jackson.serialization.<feature_name>true,false
com.fasterxml.jackson.annotation.JsonInclude.Includespring.jackson.default-property-inclusionalways, non_null, non_absent, non_default,non_empty

示例:

spring.jackson.date-format= // 序列化日期对象时使用的格式。日期格式字符串或完全限定的日期格式类名。例如,`yyyy-MM-dd HH:MM:ss`
spring.jackson.default-property-inclusion= // 控制序列化过程中包含的属性。使用Jackson的JsonInclude.Include枚举中的一个值配置。
spring.jackson.deserialization.*= // 影响Java对象反序列化方式的Jackson开/关特性。
spring.jackson.generator.*= // 用于Jackson发生器的开关功能。
spring.jackson.joda-date-time-format= // Joda日期时间格式字符串。如果没有配置,则如果使用格式字符串配置“日期格式”时会将其用作回退。
spring.jackson.locale= // 用于格式化的区域设置。
spring.jackson.mapper.*= // Jackson 通用开关功能。
spring.jackson.parser.*= // 解析程序的Jackson开/关功能。
spring.jackson.property-naming-strategy= //Jackson属性命名策略中的一个常数。也可以是PropertyNamingStrategy子类的完全限定类名。
spring.jackson.serialization.*= // 影响Java对象序列化方式的Jackson开/关特性。
spring.jackson.serialization.indent_output=true // 启用漂亮的打印  松散绑定原则,不需要大小写一致
spring.jackson.time-zone= // 设置日期格式时使用的时区。例如,“美国/洛杉矶”或“GMT+10”.
spring.jackson.visibility.*= // 可用于限制自动检测哪些方法(和字段)的Jackson可见性阈值。

Gson


  Spring Boot 提供了 Gson 的自动配置。当 Gson 在 classpath 上时,会自动配置 Gson bean。提供了几个 spring.gson.* 配置属性来自定义配置。为了获得更多控制,可以使用一个或多个 GsonBuilderCustomizer bean。

配置属性:

spring.gson.date-format= # 序列化日期对象时使用的格式.
spring.gson.disable-html-escaping= # 是否禁用HTML字符的转义,如“<”、“>”等。
spring.gson.disable-inner-class-serialization= # 是否在序列化期间排除内部类。
spring.gson.enable-complex-map-key-serialization= # 是否启用复杂映射键(即非基元)的序列化。
spring.gson.exclude-fields-without-expose-annotation= # 是否将所有没有“Expose”注释的字段排除在序列化或反序列化的考虑范围之外
spring.gson.field-naming-policy= # 在序列化和反序列化期间应应用于对象字段的命名策略。
spring.gson.generate-non-executable-json= # 是否通过在输出前添加一些特殊文本来生成不可执行的JSON
spring.gson.lenient= # 对于解析不符合RFC 4627JSON是否宽容。
spring.gson.long-serialization-policy= # 长类型和长类型的序列化策略。
spring.gson.pretty-printing= # 是否输出适合页面进行漂亮打印的序列化JSON。
spring.gson.serialize-nulls= # 是否序列化空字段。

JSON-B


  Spring Boot 提供了 JSON-B 的自动配置。当 JSON-B API 在 classpath 上时,将自动配置 Jsonb bean。首选的 JSON-B 实现是 Apache Johnzon,它提供了依赖关系管理。

配置属性:

JsonFormat:用于格式化输出JSON数据,可以设置日期格式、时间格式、数字格式等。
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
private Date date;

JsonField:用于控制JSON字段的名称、顺序和类型转换等。
@JsonField(name = "age_str")
private String age;
@JsonField(order = 2)
private String name;
@JsonField(type = JsonFieldType.Integer)
private String ageStr;

JsonInclude:用于控制哪些属性应该包含在序列化中。
@JsonInclude(Include.NON_NULL)
private Map<String, Object> include;

在这里插入图片描述

  如果喜欢的话,欢迎 🤞关注 👍点赞 💬评论 🤝收藏  🙌一起讨论
  你的支持就是我✍️创作的动力!					  💞💞💞

参考资料
Spring Boot json官方文档

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

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

相关文章

IDEA常用高效开发工具—screw一键生成数据库文档(仅需三步)

1.配置 引入screw核心... <!-- screw核心 --> <dependency><groupId>cn.smallbun.screw</groupId><artifactId>screw-core</artifactId><version>1.0.3</version> </dependency><!-- HikariCP --> <dependency…

Spring Boot 缓存 Cache 入门

Spring Boot 缓存 Cache 入门 1.概述 在系统访问量越来越大之后&#xff0c;往往最先出现瓶颈的往往是数据库。而为了减少数据库的压力&#xff0c;我们可以选择让产品砍掉消耗数据库性能的需求。 当然也可以引入缓存,在引入缓存之后&#xff0c;我们的读操作的代码&#xff…

考了个试,我扯下了理论式数据治理的遮羞布

事情要从2023年618CDGP考试说起 ...... 在全国人民都在欢天喜地剁手的时候&#xff0c;没错&#xff0c;我正在紧张的进行2023年第3期的CDGP考试。 而7月7日&#xff0c;就是放榜的日子。以dama中国的尿性&#xff0c;都是卡在第三周周五的最后一刻才会放榜。于是&#xff0…

SQL SUM() 函数

SUM() 函数返回数值列的总数。 SQL SUM() 语法&#xff1a; SELECT SUM(column_name) FROM table_name WHERE condition; column_name 是要计算总和的列名。 table_name 是包含要计算总和的列的表的名称。 WHERE 子句可选&#xff0c;用于指定要计算总和的行的条件。 演示…

动量定理不愧是大师都在推荐使用的交易策略

动量定理对交易策略的重要性不言而喻&#xff0c;许多交易大师都在推荐使用。Forexclub认为它可以通过观察趋势的持续时间来预测价格走势&#xff0c;使用振荡器来确定趋势支点&#xff0c;这个振荡器比标准振荡器更快&#xff0c;能够提前给出买卖信号。该振荡器由两条线组成&…

【Vue】vue3 v-draggable 拖拽指令封装

说明 需求&#xff1a;实现一个拖拽指令&#xff0c;可在父元素区域任意拖拽元素&#xff0c;同时如果传入的值为 father&#xff0c;则拖拽的时候以父元素为拖拽对象 思路&#xff1a; 1、设置需要拖拽的元素为absolute&#xff0c;其父元素为relative。 2、鼠标按下(onmous…

最新MPAS跨尺度、可变分辨率模式

跨尺度预测模式&#xff08;The Model for Prediction Across Scales - MPAS&#xff09;是由洛斯阿拉莫斯实验室和美国国家大气研究中心(NCAR)共同开发&#xff0c;其由3个部分组成&#xff0c;分别称为 MPAS-A&#xff08;大气模型&#xff09;、MPAS-O&#xff08;海洋模型&…

观察者模式(java)

目录 结构 案例 代码实现 抽象观察者 抽象主题类 具体观察者 具体主题类 测试类 优缺点 优点 缺点 结构 在观察者模式中有如下角色&#xff1a; Subject&#xff1a;抽象主题&#xff08;抽象被观察者&#xff09;&#xff0c;抽象主题角色把所有观察者对象保存在一个…

C语言每天一练----输出水仙花数

题目&#xff1a;请输出所有的"水仙花数" 题解&#xff1a;所谓"水仙花数"是指一个3位数,其各位数字立方和等于该数本身。 例如, 153是水仙花数, 因为153 1 * 1 * 1 5 * 5 * 5 3 * 3 * 3" #define _CRT_SECURE_NO_WARNINGS 1#include <stdio.h&g…

【Spring】ApplicationEventPublisher 发布订阅模式

概念 关于发布订阅这个词&#xff0c;其实不仅仅出现在Spring框架当中&#xff0c;其实在Redis中也有存在&#xff08;其对应的是convertAndSend()方法&#xff09;&#xff0c;还有在MQ消息队列里也是有的&#xff0c;但这里就主要介绍的是关于Spring框架的ApplicationEventPu…

数据库管理-第九十四期 19c OCM之路-第四堂(02)(20230725)

第九十四期 19c OCM之路-第四堂&#xff08;02&#xff09;&#xff08;20230725&#xff09; 第四堂继续&#xff01; 考点3&#xff1a;SQL statement tuning SQL语句调优 收集Schema统计信息 exec dbms_stats.gather_schems_stats(HR);开启制定表索引监控 create index…

IDEA+SpringBoot + Mybatis + Shiro+Bootstrap+Mysql资产设备管理系统

IDEASpringBoot Mybatis ShiroBootstrapMysql资产设备管理系统 一、系统介绍1.环境配置 二、系统展示1. 管理员登录2.用户新增3.用户设置4.岗位管理5. 审批节点6. 人员查询7. 组织设置8. 人员调整9.角色设置10.角色模块映射11.模块设置12.应用模块13.光纤交换机14.服务器15.网…

使用的华为云RDS数据库不小心把数据删了

目录 前言恢复qp文件帮助文档表级时间点恢复删除数据的时候要注意 前言 华为云查数据的时候前面是有个序号的&#xff0c;删除数据的时候不小心把序号看成id了&#xff0c;导致误删数据。 注&#xff1a;图片如果看不清楚可以点击放大观看&#xff01; 恢复qp文件 华为云每天…

centos中修改防火墙端口开放配置

1、直接进入文件修改 vim /etc/sysconfig/iptables 2、添加需要开放的端口 &#xff08;1&#xff09;添加需要开放的单个端口 4001 -A INPUT -m state --state NEW -m tcp -p tcp --dport 4001 -j ACCEPT &#xff08;2&#xff09;添加需要开放的某个网段端口 4001:4020 …

Windows Server 2019 中文版、英文版下载 (updated Jul 2023)

Windows Server 2019 中文版、英文版下载 (updated Jul 2023) Windows Server 2019 Version 1809&#xff0c;2023 年 7 月更新 请访问原文链接&#xff1a;https://sysin.org/blog/windows-server-2019/&#xff0c;查看最新版。原创作品&#xff0c;转载请保留出处。 作者…

软件测试报告怎么编写?第三方性能报告范文模板来了

前言 软件测试报告是软件测试人员针对产品执行性能测试、功能测试、系统测试等一系列操作生成的测试报告文档。一份清楚记录、分析精确的测试报告文档能帮助测试人员了解测试进度、记录产品的缺陷问题&#xff0c;从而更好地完善产品质量。 在测试报告编写过程中&#xff0c;所…

【考研英语语法及长难句】小结

【 考场攻略汇总 】 考点汇总 考场攻略 #1 断开长难句只看谓语动词&#xff0c;不考虑非谓语动词先找从句&#xff0c;先看主句 考场攻略 #2 抓住谓语动词&#xff0c;抓住句子最核心的表述动作或内容通过定位谓语动词&#xff0c;找到复杂多变的主语通过谓语动词的数量&…

优化企业集成架构:iPaaS集成平台助力数字化转型

前言 在数字化时代全面来临之际&#xff0c;企业正面临着前所未有的挑战与机遇。技术的迅猛发展与数字化转型正在彻底颠覆各行各业的格局&#xff0c;不断推动着企业迈向新的前程。然而&#xff0c;这一数字化时代亦衍生出一系列复杂而深奥的难题&#xff1a;各异系统之间数据…

【网络代理】(三)Docker+Haproxy 搭建四层代理

目录 1.1 创建 web 服务器镜像 1.2 启动 web 服务器容器 2.1 编写 haproxy 配置文件 2.2 拉取 haproxy 镜像 2.3 启动 haproxy 容器 3.1 访问 8000 端口 3.2 查看 web 服务器容器日志 附录&#xff1a;haproxy 仪表板 1.1 创建 web 服务器镜像 编写一个 Docke…

Java Object字节流及序列化和反序列化

Java中的对象字节流是通过ObjectInputStream和ObjectOutputStream类来实现的。这两个类提供了将对象转换为字节流和将字节流转换为对象的方法。 要将一个对象转换成字节流&#xff0c;你需要先创建一个ObjectOutputStream对象&#xff0c;然后使用它的writeObject()方法将对象…