当前位置: 首页 > 知识库问答 >
问题:

Jackson忽略ACCEPT_EMPTY_STRING_AS_NULL_OBJECT[重复]

越欣怡
2023-03-14

在Spring MVC中,我需要将空字符串(“”)视为null。这是因为我发现,当我编辑一个表单字段(带有Angular的ng-model),该字段最初是未定义的,然后将其擦除为空白时,Angular将以空字符串的形式发送该bean属性。如果我不接触这样的null值,它将不会在JSON有效负载中发送,因此被视为null。

<bean id="jacksonMessageConverter" class="org.springframework.http.converter.json.MappingJackson2HttpMessageConverter">
    <constructor-arg>
        <bean class="org.springframework.http.converter.json.Jackson2ObjectMapperFactoryBean">
            <property name="featuresToDisable">
                <array>
                    <util:constant static-field="com.fasterxml.jackson.databind.SerializationFeature.WRITE_DATES_AS_TIMESTAMPS" />
                </array>
            </property>
            <property name="featuresToEnable">
                <array>
                    <util:constant static-field="com.fasterxml.jackson.databind.SerializationFeature.INDENT_OUTPUT" />
                    <util:constant static-field="com.fasterxml.jackson.databind.SerializationFeature.WRITE_ENUMS_USING_TO_STRING" />
                    <util:constant static-field="com.fasterxml.jackson.databind.DeserializationFeature.READ_ENUMS_USING_TO_STRING" />
                    <util:constant static-field="com.fasterxml.jackson.databind.DeserializationFeature.ACCEPT_EMPTY_STRING_AS_NULL_OBJECT" />
                </array>
            </property>
            <property name="serializationInclusion">
                <util:constant static-field="com.fasterxml.jackson.annotation.JsonInclude.Include.NON_NULL" />
            </property>
        </bean>
    </constructor-arg>
    <property name="supportedMediaTypes">
        <array>
            <value>application/json</value>
        </array>
    </property>
</bean>
{
   "id":"ADMIN.NOTIFIER_SMTP",
   "host":"aa.bb.cc",
   "protocol":"POP",
   "securityProtocol":"PLAIN",
   "username":"", <----- shall be null on server, I don't care about client
   "passwordSet":false
}

共有1个答案

殳睿
2023-03-14

您可能想编写一个CustomObjectMapper

<mvc:annotation-driven>
    <mvc:message-converters>
        <bean class="org.springframework.http.converter.json.MappingJackson2HttpMessageConverter">
            <property name="objectMapper">
                <bean class="custom.CustomObjectMapper"/>
            </property>
        </bean>
    </mvc:message-converters>
</mvc:annotation-driven>

并在其中添加上面的反序列化器。

 类似资料:
  • 知道我做错了什么吗?如果重要的话,我将使用Jackson-core 2.1.1。

  • 我正在Jersey应用程序中使用Jackson进行JSON序列化/反序列化。我想将JSON中的空字符串读取为java POJO属性中的null值。我试图设置反序列化配置。特色接受对象映射器上的\u空\u字符串\u作为\u空\u对象,但它不工作。下面是代码 豆子如下 输出总是 我不知道这为什么不起作用。我正在使用Jackson 1.9。2.

  • 我试图使用Jackson注释来重新命名序列化过程中产生的一些json标签。所有注释都编译得很好,当我运行时,除了所有Jackson注释之外,Jackson序列化工作完全被忽略。即使像@jsonignore或@jsonproperty这样的基本命令对json响应也没有影响。构建路径中的库有: 下面是我需要序列化的一个类的代码示例:

  • 这是我的东西 当我得到响应时,我看到 我的看起来像 问题 如何消除中的值?

  • 我有一个问题。 然后在第二类中,即使我没有使用第二个字段,它仍然被添加为NULL。 我怎样才能避免这种情况呢?

  • 问题内容: 我有一堂课,里面也有变量。有时我想忽略某些字段,有时在反序列化时不想忽略(也许也在序列化时)。在Jackson怎么办? 问题答案: 对于序列化,“ 过滤属性 ”博客条目应该会有所帮助。反序列化方面的支持较少,因为更常见的是要过滤掉所写的内容。 一种可能的方法是子类化,重写使方法(和/或字段)具有可忽略性的方法,以使用所需的任何逻辑。 如果您举了一个实际应用的例子,这也可能会有所帮助,即