jackson如何将null转成 空字符串

发布于 2021-11-30 03:09:12 字数 573 浏览 927 评论 6

现在是这样写的

public ObjectMapper objectMapper() {
ObjectMapper objectMapper = Jackson2ObjectMapperBuilder.json().build();
objectMapper.getSerializerProvider().setNullValueSerializer(new JsonSerializer<Object>() {
@Override
public void serialize(Object value, JsonGenerator jg, SerializerProvider sp) throws IOException, JsonProcessingException {
jg.writeString("");
}
});
return objectMapper;
}


可是如果是对象的话,或者list  ,map 空的 也会转成 空字符串  这样就类型错误了 ,客户端就会抱错的。

想问大神如何解决 ,如何获取类型

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(6

终陌 2021-11-30 16:46:43

这种不行 ,会把对象为null的都变成 "" 空 ,类型都错了大哥

冬天旳寂寞 2021-11-30 16:31:16
ObjectMapper objectMapper = new ObjectMapper();
objectMapper.getSerializerProvider().setNullValueSerializer(new JsonSerializer<Object>() {
                
     @Override
     public void serialize(Object paramT, JsonGenerator paramJsonGenerator, SerializerProvider paramSerializerProvider) throws IOException, JsonProcessingException {
          paramJsonGenerator.writeString("");                    
     }
});
String json = objectMapper.writeValueAsString(o);

平生欢 2021-11-30 16:05:26

你这是空的不输出 ,这样客户端的实体得赋初始值

柠檬 2021-11-30 15:54:58

回复
嗯,这个我倒是有一个,不过是fastjson的,jackson倒是还没碰到过。

清欢 2021-11-30 06:25:08
<bean id="mappingJacksonHttpMessageConverter"
		class="org.springframework.http.converter.json.MappingJackson2HttpMessageConverter">
		<property name="objectMapper" ref="jacksonObjectMapper" />
	</bean>

<bean id="jacksonObjectMapper" class="com.fasterxml.jackson.databind.ObjectMapper">
		<property name="serializationInclusion">
			<value type="com.fasterxml.jackson.annotation.JsonInclude.Include">NON_NULL</value>
		</property>
		<property name="dateFormat">
			<bean class="java.text.SimpleDateFormat">
				<constructor-arg type="java.lang.String" value="yyyy-MM-dd HH:mm:ss" />
			</bean>
		</property>

</bean>

能选最佳?

反话 2021-11-30 05:04:10

经过各种方式 ,最后使用这种方式

jackson配置成

objectMapper.setSerializationInclusion(Include.NON_EMPTY);  

空的 null的不序列化 ,这样前端可以在实体上赋值默认值 ,如果是对象就new出来 ,这样取就不会有空指针错误了

还可以减少网络上的传输 ,缩小了json中没用的字段

加快了gson解析速度 ,因为对象变小了加快解析速度

看起来也很清晰了 ,如果很多空字段看起来很多 很杂乱

就这种方式了

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文