jackson如何将null转成 空字符串

银河缘木 发布于 2015/09/29 20:02
阅读 6K+
收藏 2

现在是这样写的

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 空的 也会转成 空字符串  这样就类型错误了 ,客户端就会抱错的。

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

加载中
0
银河缘木
银河缘木

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

jackson配置成

objectMapper.setSerializationInclusion(Include.NON_EMPTY);  


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

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

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

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

就这种方式了

0
盲人摸象
盲人摸象
<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>

能选最佳?



盲人摸象
盲人摸象
回复 @宇航员们 : 嗯,这个我倒是有一个,不过是fastjson的,jackson倒是还没碰到过。
银河缘木
银河缘木
你这是空的不输出 ,这样客户端的实体得赋初始值
0
RegnoiX
RegnoiX
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);



银河缘木
银河缘木
这种不行 ,会把对象为null的都变成 "" 空 ,类型都错了大哥
返回顶部
顶部