spring boot2 (30)-Jackson和ObjectMapper

Spring Boot中Jackson ObjectMapper深度配置与安全实践指南 JSON序列化与反序列化是现代Web开发中的基础技术,它实现了数据在网络传输中的标准化交换。其核心原理是通过特定的规则将内存中的对象结构转换为字符串格式,或反向解析。这项技术的价值在于打通前后端及微服务间的数据通信,提升系统互操作性。在Java生态中,Jackson库是处理JSON的事实标准,广泛应用于Spring Boot项目的RESTful API开发。通过合理配置ObjectMapper,开发者可以优化序列化性能、确保数据安全,并处理日期格式、空值忽略等常见场景。本文聚焦Jackson ObjectM 阅读详情

在spring boot中,默认使用Jackson来实现java对象到json格式的序列化与反序列化。如第3篇讲的@RequestBody和@ResponseBody的转换,最终都是由Jackson来完成的。

ObjectMapper基本用法

Jackson的转换是通过ObjectMapper对象来实现的,spring boot内部自动配置了一个ObjectMapper对象,我们可以直接用。

	@Autowired
	ObjectMapper objectMapper;
	
	@GetMapping("/hello")
	public void hello() throws IOException {
		
		User user1 = new User();
		user1.setId("1");
		user1.setName("tom");
		//序列化
		String json = objectMapper.writeValueAsString(user1);
		System.out.println(json);
		
		//反序列化
		User user2 = objectMapper.readValue(json, User.class);
		System.out.println(user2.getId());
		System.out.println(user2.getName());

writeValueAsString:是将参数中的java对象序列化为json字符串。

readValue:是将json字符串反序列化为java对象,User.class就是指定对象的类型。

最终输出如下


泛型的反序列化

上面的方法同样适用于集合类型,但如果是包含泛型的集合则需要使用以下两种方法之一
		String json = "[{\"id\":\"1\",\"name\":\"tom\"},{\"id\":\"2\",\"name\":\"jerry\"}]";
		JavaType javaType = objectMapper.getTypeFactory().constructParametricType(List.class, User.class);
		List<User> list = objectMapper.readValue(json, javaType);

或者

		String json = "[{\"id\":\"1\",\"name\":\"tom\"},{\"id\":\"2\",\"name\":\"jerry\"}]";
		List<User> list = objectMapper.readValue(json, new TypeReference<List<User>>() {});

properties常用参数配置

#日期类型格式
spring.jackson.date-format=yyyy-MM-dd HH:mm:ss
#日期类型使用中国时区
spring.jackson.time-zone=GMT+8
#序列化所有参数
spring.jackson.default-property-inclusion=always

spring.jackson.date-format:当序列化对象中包含日期类型的参数时,配置其转换的格式,如yyyy-MM-dd HH:mm:ss

spring.jackson.time-zone:有些日期数据可能并不是中国时区,设置GMT+8可将其转换为中国时区

spring.jackson.default-property-inclusion:需要进行序列化的参数,默认值为always指所有。还可配置如下值:

  • non_null:为null的参数不序列化。
  • non_empty:为空的参数不序列化,如""、null、没有内容的new HashMap()等都算。Integer的0不算空。
  • non_default:为默认值的参数不序列化,以上都算。另外,如Integer的0等也算默认值。

不序列化的参数:指java对象转换为json字符串时,其中不包含该参数。如当id=1,name=null时,always默认序列化为


如配置了不序列化为null的值,结果如下


常用注解

@JsonProperty:如下,假如id=1,转换为json时将输出key=1
	@JsonProperty("key")
	Integer id;

@JsonIgnore:如下,不序列化id参数

	@JsonIgnore
	Integer id;

Spring Boot 自动配置之 Jackson ObjectMapper 是 Jackson 库的核心类,用于在Java 对象与 JSON 字符串之间进行序列化和反序列化。它常用于 Web 接口数据交互、配置文件解析、日志输出等场景,帮助开发者方便地在 Java 与 JSON 世界之间转换数据。 阅读详情

相关推荐

Spring Boot项目中Jackson依赖的完整配置与冲突解决指南

JSON序列化是现代Java Web开发中的基础技术,它实现了对象与数据格式之间的转换,是RESTful API通信的核心机制。其原理基于反射和注解处理,通过映射对象属性与JSON键值对来完成数据交换。在Spring Boot生态中,Jackson作为默认的JSON处理库,其技术价值在于高性能、丰富的注解支持和高度模块化设计,能够显著提升微服务间数据交互的效率和可维护性。在实际应用场景中,开发者常需处理日期时间格式、多态类型序列化等需求,并需确保依赖版本统一以避免兼容性问题。本文聚焦于Spring Boot

weixin_30493401的博客 419

Spring Boot中Jackson ObjectMapper应用详解

Spring Boot支持与三种JSON mapping库集成:Gson、Jackson和JSON-B。Jackson是首选和默认的。 Jackson是spring-boot-starter-json的一部分,spring-boot-starter-web中包含spring-boot-starter-json。也就是说,当项目中引入spring-boot-starter-web后会自动引入spr...

weixin_44048532的博客 5656

在Spring Boot中利用ObjectMapper进行JSON数据处理

ObjectMapper是Jackson库的核心组件,它主要用于Java对象与JSON数据格式之间的转换。通过ObjectMapper,开发者能够方便地将POJOs(Plain Old Java Objects)序列化为JSON字符串,以及将JSON字符串反序列化为Java对象。在数据交互频繁的Web应用程序中,这种转换是常见的需求,ObjectMapper因此成为了处理JSON数据不可或缺的工具。

weixin_30632267的博客 1667

spring boot 七:SpringBoot自定义配置Jackson的ObjectMapper

1 前言SpringBoot底层默认使用的自动依赖注入,即spring-boot-autoconfigure包的META-INF下,存在spring.factories文件,里面有自动注入的jackson自动配置类。在EnableAutoConfiguration的配置下,名为JacksonAutoConfiguration。根据对该自动配置实施自定义Bean配置,可实现对@ResponseBody或@RestController注解下的响应结果的全局序列化jackson配置。

a232884c的博客 7754

QMT vs Ptrade:量化交易新手如何根据需求选择券商系统(附实战案例)

本文对比了QMT和Ptrade两大券商量化交易系统的核心差异,帮助量化交易新手根据需求选择合适的平台。QMT适合技术面策略开发,执行效率高;Ptrade则提供全面的财务数据和复杂策略支持。通过实战案例,展示了如何结合两平台优势实现高效量化交易。

weixin_42683394的博客 528

新手入门:从零开始学习PCB飞针测试全流程(附常见问题解答)

本文详细介绍了PCB飞针测试的全流程,从核心原理、设备解析到实操步骤和常见问题解答,帮助新手快速掌握这一电子制造领域的关键质检技术。内容涵盖测试资料准备、参数设置、设备操作技巧以及故障排查方法,特别适合小批量PCB生产的质量检测需求。

weixin_29295541的博客 393

58、SpringBoot 配置及定制Jackson的ObjectMapper-->ObjectMapper 是 Jackson 来处理 Json 以及 xml 转换的一个核心 API

springboot 配置及定制Jackson的ObjectMapper,ObjectMapper 是 Jackson 来处理 Json 以及 xml 转换的一个核心 API

Java 领域技术分享 4307

AD9361数字调制入门:从IQ调制原理到动手实现第一个ASK信号(Vivado工程详解)

本文详细介绍了如何使用AD9361射频收发器实现ASK数字调制,从IQ调制原理到Vivado工程实现。通过Verilog代码示例和FPGA架构设计,帮助开发者理解纯逻辑实现数字调制解调的关键技术,特别适合软件无线电(SDR)初学者入门实践。

weixin_29158047的博客 375

Spring Boot 中使用 ObjectMapper 进行 JSON 序列化和反序列化

在 Java 中,可以使用各种 JSON 序列化和反序列化工具将 Java 对象转换为 JSON 字符串或者将 JSON 字符串转换为 Java 对象。其中,Jackson 库是比较常用的 JSON 序列化和反序列化工具之一,它提供了 `ObjectMapper` 类,用于将 Java 对象转换为 JSON 字符串,或者将 JSON 字符串转换为 Java 对象。

小子宝丁的博客 8083

实现自动打包py及替换pyinstaller --add-data参数的方法

实现自动打包py及替换pyinstaller --add-data参数的方法

isS_MK_GmbH的博客 3468

STC8H8K64U ADC采样实战:从蜂鸣器控制到电压测量(附完整代码)

本文以STC8H8K64U单片机为核心,通过两个实战案例详细讲解ADC采样的应用。首先介绍如何利用ADC采样值动态控制蜂鸣器响度,实现模拟PWM效果;其次深入探讨高精度外部电压测量的方法,包括硬件连接、两点校准技巧以及软件滤波,旨在帮助开发者从理论到实践全面掌握ADC功能。

weixin_29159441的博客 563

springmvc源码学习(十五)ObjectMapper的注册

目录前言一、JacksonObjectMapperConfiguration二、JacksonObjectMapperBuilderConfiguration三、Jackson2ObjectMapperBuilderCustomizerConfiguration四、StandardJackson2ObjectMapperBuilderCustomizer总结 前言 。 一、JacksonObjectMapperConfiguration 创建@Bean ObjectMapper ,通过Jackso..

码易的博客 1378

electron:解决打包后报错Cannot find module ‘X‘ 运行报错各种模块缺失问题(解决electron build打包后运行应用报错启动失败或白屏,无论模块名称是什么都能解决!)

Electron app打包后启动报错:“Cannot find module 'X'”解决方案,electron-builder 打包出现 cannot find module,electron 打包后找不到module问题,electron打包运行白屏、Can not find modules ‘x‘,electron项目打包报错,electron打包后,点击生成的exe应用程序出现Cannot find module,解决electron-build打包后运行app报错:cannot find mod

✅ 精选推荐文章 4386

Spring Boot教程之三十二:自定义 Jackson ObjectMapper

最后,为了测试我们的配置,我们将使用 TestRestTemplate 并将对象序列化为 String。在本文中,我们将介绍配置序列化和反序列化选项的最常用方法。此功能接口的目的是允许我们创建配置 bean。在这里,我们将讨论如何自定义 Spring Boot 使用的默认 ObjectMapper。使用 Spring Boot 时,我们可以选择自定义默认的 ObjectMapper 或覆盖它。如果我们想从不同的配置或模块配置 ObjectMapper,这种优雅的方法很合适。

潜洋的专栏 1672

【SWAT】SWAT中预定义河网及流域

平原圩区没有明显的海拔差异。DEM中包含的地形信息无法定义河段的位置和水文连接,SWAT模型Watershed Delineator中提供两种方法,帮助用户输入流域拓扑信息。第一种方法,“Burn-in”和手动绘制河段和子流域边界。首先,使用“Burn-in”功能导入数字河道网络(DCN),并根据DEM和DCN绘制河流和子流域。然后在ArcGIS中编辑“流域”和“河段”层,可以调整位置、范围和水文连接。第二种方法,可以手动绘制或重新编辑河流和子流域,预定义河网及流域。

```On Earth, Be Water, By Coding``` 3277

Probability and Statistics - 4th edition

Probability and Statistics - 4th edition

Spring Boot 自定义Jackson ObjectMapper

在Spring Boot Web 项目中,当使用JSON格式接收数据和返回数据的时候,Spring Boot 默认使用一个ObjectMapper实例来序列化响应和反序列化请求。 在本文中,我们将看看配置序列化和反序列化选项的最常用方法。...

m0_69305074的博客 1983

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

Spring Boot jackson配置使用详解

SpringBoot系列-json框架jackson配置详解 T1 - 前言 目前Java最常见的3中JSON操作框架分别为Gson、Jackson、FastJson,该篇文章主要讲解jackson在SpringBoot环境中各配置项的具体作用。 T2 - 环境依赖 jackson是spring-boot的web/webflux框架默认依赖的json库,要使用SpringBoot的jack...

z28126308的专栏 4万+

SAP B1中文培訓教材_SDK

公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

3.Spring Boot 中Jackson配置,ObjectMapper使用详解

绍了Jackson对外提供的API类ObjectMapper是如何序列化和反序列化json,以及在sping-boot中集中配置时间格式,从而避免使用`@JsonFormat`来格式化时间

妖怪的博客 7998

Spring boot 自动配置jackson ObjectMapper

spring boot 通过 org.springframework.boot.autoconfigure.jackson.JacksonAutoConfiguration自动配置一个ObjectMapper对象 /* * Copyright 2012-2018 the original author or authors. * * Licensed under the Apache L...

jxchallenger的专栏 1万+

Spring Boot 3 → 4 迁移Spring Boot 3 指南:Jackson 2到Jackson 3升级实战

Spring Boot 4.0.0中Jackson模块的迁移要点 Spring Boot 4.0.0升级了Jackson到3.0版本,带来多项重要变化: 包名变更:从com.fasterxml.jackson改为tools.jackson 异常模型:从受检异常改为非受检异常 ObjectMapper不可变:需改用Builder模式配置 核心类重命名:如JsonFactory改为TokenStreamFactory 内置支持:Java 8时间模块等不再需要单独依赖 迁移步骤包括:升级Spring Boot版本

weixin_41912069的博客 2138

Spring Boot:自定义Jackson ObjectMapper

1.概述 当使用JSON格式时,Spring Boot将使用ObjectMapper实例来序列化响应并反序列化请求。 2.默认配置 默认情况下,Spring Boot配置将: 禁用 MapperFeature.DEFAULT_VIEW_INCLUSION 禁用 DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES(默认情况下启用此功能(这意味着如果遇到未知属性,将抛出JsonMappingException) 禁用 SerializationFeature.W

盲目的拾荒者的博客 1万+

spring boot定制Jackson ObjectMapper,为什么不生效

先说结论: 项目中定制了spring 的redisTemplate,而这个template没有使用我自定义的Jackson ObjectMapper。所以不生效。 下面是详细过程: 起因是spring boot项目加入了shiro,我打算使用redis去存储shiro的会话,方便以后横向扩展。 参考了网上的实现后,决定通过扩展org.apache.shiro.session.mgt....

weixin_30695195的博客 3476

在Spring Boot中定制Jackson ObjectMapper详解

当使用 JSON 格式时,Spring Boot 将使用*ObjectMapper*实例来序列化响应和反序列化请求。 在本教程中,我们将了解配置序列化和反序列化选项的最常用方法。

白石的专栏 5377
上一篇: spring boot2 (29)-ApplicationRunner和CommandLineRunner初始化
下一篇: centos(15)-静态IP
free_java
博客等级 码龄10年 664粉丝 131原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值