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