0814 接口返回的json数据被转义的原因

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/weixin_30531261/article/details/81672113

接口返回的json数据被转义了

描述

调用接口,返回的json字符串被转义了,而记录在日志里的数据却不会被转义。很奇怪。

详情

刚开始接触福建etc项目的时候,要配合处理一个问题。把接口调通后,发现返回的json被转义了:

上面的信息是接口返回的数据,而我接口返回前做的日志记录,却是不会被转义的:

之前是不会被转义的,我所做的改变是将之前的返回bean对象改成返回json字符串。结果是我返回的json字符串被转义了。

之所以要把返回数据的格式修改是因为有其他需求,因为急着联调,所以还是返回bean对象,通过其他途径解决了需求的问题。

原因

今天,在另一个接口上,返回的数据是一个url,发现返回的url是带双引号的。可是我返回的数据明明是不带双引号的,于是百度了一下,发现原来是因为在配置文件里配置了json解析器:

     <bean id="json" class="org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter">  
         <property name="messageConverters">  
             <list>
                 <bean class="org.springframework.http.converter.json.MappingJackson2HttpMessageConverter">
                    <property name="supportedMediaTypes">
                       <list>
                        <value>application/json;charset=UTF-8</value>
                       </list>
                    </property>
                 </bean>  
             </list>  
         </property>  
     </bean>

所以返回的数据都是json格式的,如果返回的是字符串,就会被转义。所以我之前返回的json字符串会被转义,所以我另一个接口返回的url是带双引号的。

解决方法:
在json解析器之前加上字符串解析器:

<bean class="org.springframework.http.converter.StringHttpMessageConverter"/>

这样,问题就解决了。

扫描二维码关注公众号,回复: 3336077 查看本文章

猜你喜欢

转载自blog.csdn.net/weixin_30531261/article/details/81672113