springboot项目响应信息Jackson解析映射,key为null时抛异常解决办法

2023-11-18

当使用@RestController注解时,会把响应信息自动解析成json格式,使用的是Jackson,但是Jackson默认不解析key为null的映射时会抛出异常,需要增加配置;

解决:

import com.fasterxml.jackson.core.JsonGenerator;
import com.fasterxml.jackson.databind.JsonSerializer;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.fasterxml.jackson.databind.SerializerProvider;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.http.converter.json.Jackson2ObjectMapperBuilder;
import org.springframework.http.converter.json.MappingJackson2HttpMessageConverter;

import java.io.IOException;

/**
 * Jackson解析配置
 * @author YanZhen
 * @date 2022/03/15 19:23
 */
@Configuration
public class JacksonConverterConfig {

    /**
     * @return 重写Jackson解析配置
     */
    @Bean
    public MappingJackson2HttpMessageConverter mappingJackson2HttpMessageConverter() {
        ObjectMapper objectMapper = new Jackson2ObjectMapperBuilder().build();
        // objectMapper.setSerializationInclusion(JsonInclude.Include.NON_NULL); // 当值为null时舍弃序列化
        // 当Jackson解析map时,key为null转为空,防止com.fasterxml.jackson.databind.JsonMappingException异常
        objectMapper.getSerializerProvider().setNullKeySerializer(new JsonSerializer<Object>(){
            @Override
            public void serialize(Object o, JsonGenerator jsonGenerator, SerializerProvider serializerProvider) throws IOException {
                jsonGenerator.writeFieldName("");
            }
        });
        return new MappingJackson2HttpMessageConverter(objectMapper);
    }
}

可以设置成任何占位,只要你需要!!!

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

springboot项目响应信息Jackson解析映射,key为null时抛异常解决办法 的相关文章

随机推荐

  • c语言停车场

    include
  • Google Test(GTEST)使用入门(2)- 原生例子分析

    目录 一 原生例子路径 二 待测代码 三 主程序入口 四 测试用例代码 五 总结 一 原生例子路径 上篇我们已经介绍原生的例子在如下路径 googletest release 1 8 1 googletest samples 测试用例和待测
  • spring boot一个奇怪的错误(There was an unexpected error (type=Internal Server Error, status=500). Exceptio)

    今天运行spring boot的时候爆了这个错 There was an unexpected error type Internal Server Error status 500 Exception parsing document t
  • numpy--argsort含义及连续两个argsort用法

    官方文档 https docs scipy org doc numpy 1 15 0 reference generated numpy argsort html numpy argsort argsort函数返回的是数组值从小到大的索引值
  • 三极管的知识

    三极管的知识 在实际的电路中 三极管可以应用到很多的场景中 三极管最常用的功能是开关的作用 要利用其开关的作用 那么必须了解三极管的特性 B为基极 E为发射极 C为集电极 根据箭头的方向来判定三极管是NPN还是PNP 1 截止状态 当加在三
  • 【SpringSecurity】使用注解方式实现匿名访问

    SpringSecurity实现匿名访问的方式如下 spring security配置 link EnableGlobalMethodSecurity 如果想要启用spring方法级安全时 使用这个注解 author ruoyi Enabl
  • css常用选择器

    一 常用的css基本选择器 4种 1 标签选择器 结构 标签名 css属性名 属性值 作用 通过标签名 找到页面中所有的这类标签 设置样式 注意 1 标签选择器选择的是一类标签 而不是单独的一个 2 标签选择器无论嵌套关系有多深 都能够找到
  • AC自动机 (多模式匹配)

    AC自动机 感谢博主 https blog csdn net bestsort article details 82947639 感谢博主 https fanfansann blog csdn net article details 106
  • C++socket编程(三):3.5 accept读取用户的连接信息

    读取用户的连接信息 顾名思义 就是在服务段中获取连接进来的客户端的ip地址 套接字编号 ip地址 端口号等 下面开看代码 获取用户客户端的socket号 int client accept sock 0 0 创建一个新的socket 用来与
  • 软件测试笔记(九)- 兼容性测试

    了解如何针对不同的软件应用程序和操作系统交互的问题进行测试 一 兼容性测试综述 随着用户对来自各个厂商的各种类型程序之间共商数据能力和充分利用空间同时执行多个程序能力的要求 测试程序支架能否写作变得越来越重要 软件兼容性测试 softwar
  • Qt使用msvc编译器情况下,如何进行内存泄漏检测

    背景 使用Qt5版本 编译器选择msvc2017 在测试基于tinyxml2的二次封装类接口是否存在内存泄漏问题时 寻找内存泄漏检测工具 问题 寻找适合Qt msvc编程的内存泄漏检测工具 尝试 VLD Visual Leak Detect
  • 【Linux】基础I/O

    在C语言中我们学习到了文件的I O 可以回顾一下 https blog csdn net mmwwxx123 article details 81516082 系统文件I O linux下所有设备都是以文件存在的 可以说是一切皆文件 所以当
  • dc综合报告wand,vc spyglass lint工具不报告W145多驱动。原因是什么?

    因为vc spyglass lint对unload的信号 会不报告W145多驱动 另外 dc工具 会在某层次 认为1 b0是n1487信号线 dc check design报告里 会提醒多驱动 连接到了n1487信号线上 解决方法 根据dc
  • 【C++/STL】手撕AVL树

    文章目录 1 map中的问题 1 1map的insert 函数剖析 1 2map对 的重载 2 AVL树的模拟实现 2 1AVL树的概念 2 2AVL树节点的定义 2 3AVL树的插入 1 在较高的右子树右侧插入数据 左单旋 2 在较高的左
  • 【操作系统】寄存器

    概念 寄存器是CPU内部用来存放数据的一些小型存储区域 用来暂时存放参与运算的数据和运算结果 其实寄存器就是一种常用的时序逻辑电路 但这种时序逻辑电路只包含存储电路 寄存器的存储电路是由锁存器或触发器构成的 因为一个锁存器或触发器能存储1位
  • 443M衣架遥控arduino代码备档

    byte up 65 0 0 1 1 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 1 1 1 1 0 0 0 1 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 1 0 1
  • 机器学习笔记GBDT(一):原理

    目录 文章目录 目录 前言 1 GBDT概述 2 GBDT的负梯度拟合 3 GBDT回归算法 1 初始化弱学习器 2 对于迭代轮数t 1 2 T有 3 得到强学习器f x 的表达式 4 GBDT分类算法 4 1 二元GBDT分类算法 4 2
  • Spring Boot自动扫描

    进行Spring Boot和Mybatis进行整合的时候 Spring Boot注解扫描的时候无法扫描到Application类的以外的包下面的注解 如下图 App就是Application类 下图是ProductMapper 类 Mapp
  • 函数的参数(形参与实参)的理解

    函数的参数 实际参数 实参 真实传给函数的参数 叫实参 实参可以是 常量 变量 表达式 函数等 无论实参是何种类型的量 在进行函数调用时 它们必须有确定的值 以便把这些值传送给形参 形式参数 形参 形式参数是指函数名后括号中的变量 因为形式
  • springboot项目响应信息Jackson解析映射,key为null时抛异常解决办法

    当使用 RestController注解时 会把响应信息自动解析成json格式 使用的是Jackson 但是Jackson默认不解析key为null的映射时会抛出异常 需要增加配置 解决 import com fasterxml jacks