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

Jackson序列化json时null转成空串或空对象

在项目中可能会遇到需要将null转"",可以通过以下方法解决。

一:添加JacksonConfig 配置

import com.fasterxml.jackson.core.JsonGenerator;
import com.fasterxml.jackson.databind.JsonSerializer;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.fasterxml.jackson.databind.SerializationFeature;
import com.fasterxml.jackson.databind.SerializerProvider;
import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.Primary;
import org.springframework.http.converter.json.Jackson2ObjectMapperBuilder;

import java.io.IOException;

@Configuration
public class JacksonConfig {

@Bean
@Primary
@ConditionalOnMissingBean(ObjectMapper.class)
public ObjectMapper jacksonObjectMapper(Jackson2ObjectMapperBuilder builder) {
ObjectMapper objectMapper = builder.createXmlMapper(false).build();
// 关键代码-解决No serializer found for class java.lang.Object异常
objectMapper.configure(SerializationFeature.FAIL_ON_EMPTY_BEANS, false);
//关键代码-将null转为空字符串、空对象
objectMapper.getSerializerProvider().setNullValueSerializer(new JsonSerializer<Object>() {
@Override
public void serialize(Object o, JsonGenerator jsonGenerator, SerializerProvider serializerProvider) throws IOException {
jsonGenerator.writeString("");//空串
//jsonGenerator.writeObject(new Object());//空对象
}
});
return objectMapper;
}

}

二、注意

1、关键代码分析

objectMapper.configure(SerializationFeature.FAIL_ON_EMPTY_BEANS, false)

此行代码的作用是解决下面的异常:

com.fasterxml.jackson.databind.exc.InvalidDefinitionException: No serializer found for class java.lang.Object and no properties discovered to create BeanSerializer (to avoid exception, disable SerializationFeature.FAIL_ON_EMPTY_BEANS) (through reference chain: cloudpc.datasource.common.response.Result["data"])

2、 @ConditionalOnMissingBean

它是修饰bean的一个注解,主要实现的是,当你的bean被注册之后,如果而注册相同类型的bean,就不会成功,它会保证你的bean只有一个,即你的实例只有一个,当你注册多个相同的bean时,会出现异常,以此来告诉开发人员。

一般来说,对于自定义的配置类,我们应该加上@ConditionalOnMissingBean注解,以避免多个配置同时注入的风险。

相关文章:

Jackson序列化json时null转成空串或空对象

在项目中可能会遇到需要将null转""&#xff0c;可以通过以下方法解决。一&#xff1a;添加JacksonConfig 配置import com.fasterxml.jackson.core.JsonGenerator;import com.fasterxml.jackson.databind.JsonSerializer;import com.fasterxml.jackson.databind.Objec…...

如何将Python的上级目录的文件导入?【from.import】

假如有如下目录&#xff1a; -python ----file1 ---------file1_1 ------------------pfile1_1.py ---------pfile1.py ----file2 ---------pfile2.py ----pfile.py ----data.py 在pfile1_1.py中想要将pfile.py 导入怎么办&#xff1f; 首先将其上级目录添加到系统目…...

Java实现碧蓝航线连续作战

目录一.实现功能二.主要思路三.代码实现四.用exe4j生成.exe程序五.最终效果六.代码开源一.实现功能 主线图作战结束到结算页自动点击再次前往 二.主要思路 判断是否进入了结算界面&#xff1a;记录结算界面某个像素点的RGB值&#xff0c;每隔3秒对这个像素点进行比对 移动鼠标…...

Docker笔记

文章目录1.docker为什么会出现2.docker是什么3.传统虚拟机和容器的对比3.1虚拟机3.2容器虚拟化技术3.3两者对比3.4为什么Docker会比VM虚拟机快&#xff1f;4.docker能干嘛6.docker的应用场景7.docker三要素一&#xff1a;镜像&#xff08;Image&#xff09;二&#xff1a;容器&…...

情人节使用AI TOOL来创建一个甜言蜜语的女伴

一、首先使用chatgpt生成一段情侣间的对话&#xff0c;需要反复几次&#xff0c;达到满意的程度&#xff0c;然后将女方的话归在一起。 这是一个情侣私下谈话的场景&#xff0c;女方表示对男朋友精心准备的情人节安排和礼物表示很满意 二、 打开网站&#xff1a;https://lexic…...

G-GhostNet(IJCV 2022)原理与代码解析

paper&#xff1a;GhostNets on Heterogeneous Devices via Cheap Operationscode&#xff1a;https://github.com/huawei-noah/Efficient-AI-Backbones/blob/master/g_ghost_pytorch/g_ghost_regnet.py前言本文提出了两种轻量网路&#xff0c;用于CPU端的C-GhostNet和用于GPU端…...

Ethercat系列(5)TWcat3激活过程的协议分析(续1)

顺序写系统时间偏移从-》主顺序写时间延迟主-》从从-》主顺序写分布式时钟启动主-》从从-》主读多重写系统时间主-》从从-》主顺序写应用层控制主-》从从-》主顺序读错误计数器主-》从从-》主顺序读应用层状态主-》从从-》主顺序读应用层&#xff0c;广播写错误计数器主-》从从…...

QT入门Input Widgets之QScrollBar

目录 一、界面布局功能 1、界面位置介绍 2、控件界面基本属性 2.1 horizontalScrollBar界面属性 3、样式设置 此文为作者原创&#xff0c;创作不易&#xff0c;转载请标明出处&#xff01; 一、界面布局功能 1、界面位置介绍 QScrollBar主要分为两种&#xff0c;一种垂直…...

【ML】基于机器学习的心脏病预测研究(附代码和数据集,多层感知机模型)

写在前面: 首先感谢兄弟们的订阅,让我有创作的动力,在创作过程我会尽最大努力,保证作品的质量,如果有问题,可以私信我,让我们携手共进,共创辉煌。 之前创作过心脏病预测研究文章如下: 【ML】基于机器学习的心脏病预测研究(附代码和数据集,逻辑回归模型) 【ML】基于机…...

工序排序问题--约翰逊法精讲

什么是约翰逊法?约翰逊法是作业排序中的一种排序方法。选出最短加工时间i*&#xff0c;若最短加工时间有多个&#xff0c;任选1个.若i*出现在机床1&#xff0c;它对应的工件先安排加工&#xff0c;否则放在最后安排&#xff0c;安排后划去该工件,重复上两个步骤&#xff0c;直…...

WebDAV之葫芦儿·派盘+网盘精灵

网盘精灵 支持WebDAV方式连接葫芦儿派盘。 推荐一款让您的iPhone、iPod、iPad 变成WebDav客户端的软件,支持从WebDav服务器连接葫芦儿派盘服务进行上传和下载件。 网盘精灵让您的iPhone、iPod、iPad 变成WebDav客户端。功能:WebDav操作、文件共享、本地文件管理...

计算机网络期末知识点总结

计算机网络期末知识点总结第四章—网络层&#xff1a;数据面4.1概述4.2虚电路和数据报网络4.3路由器工作原理4.4网际协议&#xff1a;因特网中的转发和编址第五章 网络层&#xff1a;控制面5.1路由选择算法5.2路由器中的路由选择5.3广播和多播路由选择第六章 链路层&#xff08…...

【Vue3 组件封装】vue3 轮播图组件封装

文章目录轮播图功能-获取数据轮播图-通用轮播图组件轮播图-数据渲染轮播图-逻辑封装轮播图功能-获取数据 目标: 基于pinia获取轮播图数据 核心代码&#xff1a; &#xff08;1&#xff09;在types/data.d.ts文件中定义轮播图数据的类型声明 // 所有接口的通用类型 export typ…...

电力国家(行业)标准目录

1、3&#xff5e;63kV交流高压负荷开关 GB 3804-90 代替 GB 3804-882、电气装置安装工程35kV及以下架空电力线路施工及验收规范Code for construction and acceptance of 35kVand umder over head power levels electricequipment installation engineeringGB50173—923、带电作…...

如何实现倒序输出

问题 如何实现字符串的大小写转换并倒序输出。 方法 采用Java自带的类方法进行倒序。 package homework4; public class Blog09 { public static void main(String[] args) { String a "HelloWord"; String a2 a.toUpperCase(); String a3 …...

遗留系统的自动化测试策略和实践方法

1 什么是遗留系统 遗留系统是一种旧的方法、旧的技术、旧的计算机系统或应用程序,属于或与以前的、过时的计算机系统有关,但仍在使用中。通常,将系统称为“遗留系统”意味着它可能已经过时或需要更换,但是系统还在对外提供服务,还在不断的迭代,有新的需求不断的交付。Ma…...

【Android】系统源码下载及编译

源码及编译 步骤 1&#xff1a;创建一个空目录来存放源码&#xff1a; mkdir aosp cd aosp步骤 2&#xff1a;获取最新版本的 repo 并签出 android-8.1.0_r1 分支&#xff1a; repo init -u https://android.googlesource.com/platform/manifest -b android-8.1.0_r1其中&am…...

基于HTML实现浪漫情人节表白代码(附源代码)

&#x1f935;‍♂️ 个人主页&#xff1a;艾派森的个人主页 ✍&#x1f3fb;作者简介&#xff1a;Python学习者 &#x1f40b; 希望大家多多支持&#xff0c;我们一起进步&#xff01;&#x1f604; 如果文章对你有帮助的话&#xff0c; 欢迎评论 &#x1f4ac;点赞&#x1f4…...

PCL 平面拟合——RANSAC

文章目录 一、基本思想二、代码示例1、参数选择2、核心代码3、完整代码4、结果展示三、关于 RANSAC 的一些思考参考文献一、基本思想 随机抽样一致性算法RANSAC(Random sample consensus)是一种迭代的方法,从一系列包含有离群值的数据中计算数学模型参数的方法。RANSAC算法本…...

【Linux之Shell脚本实战】监控系统的磁盘空间使用率

【Linux之Shell脚本实战】监控系统的磁盘空间使用率 一、脚本要求二、检查本地系统环境1.检查系统版本2.检查系统内核版本三、编写disk.sh脚本1.创建脚本目录2.编写disk.sh脚本3.执行测试脚本四、查看脚本执行日志文件五、本次实践总结1.脚本定时执行2.实践总结一、脚本要求 1.…...

基于LangChain与本地LLM构建私有化知识库问答系统实践

1. 项目概述&#xff1a;从零构建一个垂直领域的知识库与问答系统最近在整理个人技术资料时&#xff0c;我遇到了一个非常典型的问题&#xff1a;手头积累了大量来自不同渠道的电子书、技术文档、知乎专栏文章以及各种开源项目的README&#xff0c;内容虽然优质&#xff0c;但过…...

2026 汽车运动权威盘点:历史悠久、级别最高的标杆赛事解读

在汽车产业飞速发展的今天&#xff0c;汽车运动早已超越单纯的竞技比拼&#xff0c;成为彰显工业实力、传递汽车文化、连接产业与消费者的重要桥梁。2026 年&#xff0c;全球汽车运动市场持续升温&#xff0c;国际顶级赛事与国内标杆赛事同频共振、百花齐放。而那些历史悠久、级…...

解决企业级日期处理难题:Vue3-DateTime-Picker的现代化架构设计与实战应用

解决企业级日期处理难题&#xff1a;Vue3-DateTime-Picker的现代化架构设计与实战应用 【免费下载链接】vue3-date-time-picker Datepicker component for Vue 3 项目地址: https://gitcode.com/gh_mirrors/vu/vue3-date-time-picker Vue3-DateTime-Picker是一款基于Vue…...

解密GAIA-DataSet:如何用6500+真实系统指标革新AIOps研究

解密GAIA-DataSet&#xff1a;如何用6500真实系统指标革新AIOps研究 【免费下载链接】GAIA-DataSet GAIA, with the full name Generic AIOps Atlas, is an overall dataset for analyzing operation problems such as anomaly detection, log analysis, fault localization, e…...

射频高手到底强在哪里?尤其做5G,真正拼的是这套底层功夫

&#x1f680;《射频高手到底强在哪里&#xff1f;尤其做5G&#xff0c;真正拼的是这套底层功夫》&#x1f3af;射频不是“接个天线、调个匹配”这么简单。 真正的射频高手&#xff0c;脑子里装的是&#xff1a;电磁场 传输线 调制解调 噪声 PA 天线 认证测试 系统干扰链…...

2026年小白程序员必看:5项吃香AI技能,助你薪资翻倍(建议收藏)

2026年小白程序员必看&#xff1a;5项吃香AI技能&#xff0c;助你薪资翻倍&#xff08;建议收藏&#xff09; 随着AI大模型重构职场规则&#xff0c;掌握相关技能将极大提升工作效率和薪资。本文为小白和程序员推荐了5项最吃香的AI技能&#xff1a;RAG、提示词工程、多模态大模…...

产品质量总是不稳?问题可能出在这五个地方

你厂里是不是也有这类难题&#xff1f;投入不少钱买设备、招人手&#xff0c;产品质量却始终上不去。不良品率高、批量出问题、客户投诉退货&#xff0c;甚至找不到问题根源。今天我就来聊聊质量上不去的几个原因&#xff0c;大家可对照自查。一、问题可能出现在生产之前看到质…...

开发AI Agent时如何通过Taotoken灵活调度不同模型

&#x1f680; 告别海外账号与网络限制&#xff01;稳定直连全球优质大模型&#xff0c;限时半价接入中。 &#x1f449; 点击领取海量免费额度 开发AI Agent时如何通过Taotoken灵活调度不同模型 在构建复杂的AI Agent系统时&#xff0c;一个常见的需求是根据不同的任务类型&a…...

2024数字芯片与FPGA校招面试复盘:从项目细节到协议深挖

1. 从FPGA到数字芯片&#xff1a;校招面试的核心差异 去年我参加了几十场数字芯片和FPGA岗位的面试&#xff0c;最大的感受就是&#xff1a;面试官对这两类候选人的考察重点完全不同。FPGA项目出身的同学&#xff08;比如我&#xff09;经常会被质疑"代码量不足"、&q…...

LSTM时间序列预测实战:从数据预处理到模型调优全解析

1. 项目概述&#xff1a;当时间序列遇上LSTM在数据分析与预测的领域里&#xff0c;时间序列预测一直是个既经典又充满挑战的课题。无论是金融市场的股价波动、电商平台的销量起伏&#xff0c;还是工业设备的传感器读数、城市交通的流量变化&#xff0c;这些按时间顺序排列的数据…...