码迷,mamicode.com
首页 > 其他好文 > 详细

[FAQ]jackson解决:null到"", 空值处理为空串

时间:2014-06-10 07:28:26      阅读:354      评论:0      收藏:0      [点我收藏+]

标签:c   style   class   code   java   a   

1.一个比较头疼的问题:

jackson + spring 支持rest接口,输出的JSON 对于null的字符串是invoiceTitlenull,但是接受方希望返回的是invoiceTitle: ""。解决方法重写ObjectMapper


2.代码如下:

	public JsonMapper() {
		//this(Include.NON_EMPTY);
		// 空值处理为空串
				this.getSerializerProvider().setNullValueSerializer(
						new JsonSerializer<Object>() {
							@Override
							public void serialize(Object value, JsonGenerator jgen,
									SerializerProvider provider) throws IOException,
									JsonProcessingException {
								jgen.writeString("");
							}
						});
	}


3.配置如下:

<mvc:annotation-driven content-negotiation-manager="contentNegotiationManager">
		<mvc:message-converters register-defaults="true">
			<!-- 将StringHttpMessageConverter的默认编码设为UTF-8 -->
			<bean class="org.springframework.http.converter.StringHttpMessageConverter">
		    	<constructor-arg value="UTF-8" />
			</bean>
			<!-- 将Jackson2HttpMessageConverter的默认格式化输出为true -->
			<bean class="org.springframework.http.converter.json.MappingJackson2HttpMessageConverter">
                <property name="objectMapper">  
                    <bean class="com.sencloud.util.JsonMapper"/>  
                </property> 
            </bean>
            <!-- 使用XML格式输出数据 -->
            <bean class="org.springframework.http.converter.xml.MarshallingHttpMessageConverter">
		        <constructor-arg>
		        	<bean class="org.springframework.oxm.xstream.XStreamMarshaller">
				        <property name="streamDriver">
				            <bean class="com.thoughtworks.xstream.io.xml.StaxDriver"/>
				        </property>
				        
				    </bean>
		        </constructor-arg>
		        <property name="supportedMediaTypes" value="application/xml"></property>
			</bean>
		</mvc:message-converters>

这样之后,还是不能自动匹配规则把整个的JOSN转为:invoiceTitlenull,》invoiceTitle: ""

只能通过下面实例实现解决这个问题。

brf.setResultCode(0);
		brf.setRows(orderBlocks);
		brf.setResultMessage("succeed");
		JsonMapper jsonMapper = new JsonMapper();
		return jsonMapper.toJson(brf);

注意使用这种方式需要手动设置编码如下:

@RequestMapping(method = RequestMethod.GET, value = "/test",produces = "application/json; charset=utf-8")


不知为毛,不定位了。

[FAQ]jackson解决:null到"", 空值处理为空串,布布扣,bubuko.com

[FAQ]jackson解决:null到"", 空值处理为空串

标签:c   style   class   code   java   a   

原文地址:http://blog.csdn.net/dracotianlong/article/details/29594107

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!