使用springboot时如何创建JsonDeserializer,将null设置为JSON中等于“”的所有Java对象字段?

Posted

技术标签:

【中文标题】使用springboot时如何创建JsonDeserializer,将null设置为JSON中等于“”的所有Java对象字段?【英文标题】:How to create JsonDeserializer that sets null to all Java object fields that equals to "" in JSON when using springboot? 【发布时间】:2019-03-02 07:29:52 【问题描述】:

我使用的是spring boot,需要接受application/json格式的http请求。有一些参数等于“”,我需要接受那些为空的参数。

我知道有一些类似的问题,但这些问题没有任何具体的答案,如果有人能给出代码实现的具体解释,我将不胜感激。

================================================ ======================

这是我的最终代码解决方案,希望对某人有所帮助。

@Configuration
public class MessageConverterConfig

    @Bean
    @Primary // Use this to shadow other objectmappers
    public ObjectMapper objectMapper()
        ObjectMapper objMapper = new ObjectMapper();
        objMapper.configure(DeserializationFeature.ACCEPT_EMPTY_STRING_AS_NULL_OBJECT,true);
        return objMapper;
    


【问题讨论】:

【参考方案1】:

这应该可以帮助你jackson-issue

基本上你需要创建自定义反序列化器 然后将其作为模块注册到您的 ObjectMapper

【讨论】:

我知道反序列化器可以实现它,但我想要一些更具体的代码实现作为示例。参数可以是 java 中的任何类型,例如枚举类型。非常感谢您的回答。 但是这个例子是针对字符串类型给出的,如果类型是枚举呢?我应该把注册模块代码放在哪里,在一个带有配置注释的文件中? 很抱歉,您需要自己解决这个问题。这是您应用编程技能并学习新东西的时候。

以上是关于使用springboot时如何创建JsonDeserializer,将null设置为JSON中等于“”的所有Java对象字段?的主要内容,如果未能解决你的问题,请参考以下文章

Springboot 错误:使用名称创建 bean 时出错

为了使用springboot热部署功能,在使用创建向导时应选

使用 Spring Boot 时如何使用 SpringTemplateEngine

启动 SpringBoot 应用程序时使用 JDBC 驱动程序创建 Postgres 数据库?

如何使用拦截器,一学就会!

如何使用拦截器,一学就会!