Java API接口返回不是JSON的解决方案,SpringMVC返回JSON配置。

JSON 2016-08-22 16:11:01 45023

前几天遇到个问题,在 Java  IOS Android 提供的API 接口的时候,IOS 接收到的是IO 流信息。而 Java  Android 使用木有任何问题,仔细的观察发现了蹊跷。如图。

如果Content-Type 是非 application/json 的都有问题,虽然小部分也是可以的,但是application/json 才是真的没问题。

个人的理解为什么 Java  Android 可以,而IOS 不行呢, Java  Android 在读取接口数据的时候首先框架上会有多方面的处理,其次我发现 Java  Android 好像浏览器一样,先是识别的数据,根据数据类识别类型,而不是优先根据文件的返回类型(Content-Type )来决定的。

——这只是个猜测。别认真

下面我针对SpringMVC 来说说配置解决。在我们的SpringMVC 配置文件中,也就是一般命名为spring-mvc.xml 中配置如下:

<!-- 这个一定得有,注意了,如果其他配置也有需要这个,已经配置了,那不必了 -->
<mvc:annotation-driven  />
<!-- 启动Spring MVC的注解功能,完成请求和注解POJO的映射 -->
<bean class="org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter">
	<property name="messageConverters">
		<list>
			<!--json转换器-->
			<ref bean="mappingJacksonHttpMessageConverter" />
		</list>
	</property>
</bean>

<bean class="org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter">  
	<property name="messageConverters">  
        <list>  
               <ref bean="mappingJacksonHttpMessageConverter" />  
        </list>  
    </property>  
</bean>  
        
<bean id="mappingJacksonHttpMessageConverter"  
    class="org.springframework.http.converter.json.MappingJacksonHttpMessageConverter">  
     <property name = "supportedMediaTypes">  
		  <list>  
		    <bean class="org.springframework.http.MediaType">  
		     <constructor-arg index="0" value="text"/>  
		     <constructor-arg index="1" value="plain"/>  
		     <constructor-arg index="2" value="UTF-8"/>  
		    </bean>  
		    <bean class="org.springframework.http.MediaType">  
		     <constructor-arg index="0" value="*"/>  
		     <constructor-arg index="1" value="*"/>  
		     <constructor-arg index="2" value="UTF-8"/>  
		    </bean>  
		    <bean class="org.springframework.http.MediaType">  
		     <constructor-arg index="0" value="text"/>  
		     <constructor-arg index="1" value="*"/>  
		     <constructor-arg index="2" value="UTF-8"/>  
		    </bean>  
		     <bean class="org.springframework.http.MediaType">  
		     <constructor-arg index="0" value="application"/>  
		     <constructor-arg index="1" value="json"/>  
		     <constructor-arg index="2" value="UTF-8"/>  
		    </bean>  
		  </list>  
	</property>  
</bean> 

配置后返回如图:

这就是OK了,不管怎么用都是 JSON  了,除非你接收的时候,你是用Text 类型的接收。

如果是其他框架,请用httpResponse 输出的时候,指定Content-Type application/json 即可。

有问题加群交流。


版权所属:SO JSON在线解析

原文地址:https://www.sojson.com/blog/124.html

转载时必须以链接形式注明原始出处及本声明。

本文主题:

如果本文对你有帮助,那么请你赞助我,让我更有激情的写下去,帮助更多的人。

关于作者
一个低调而闷骚的男人。
相关文章
JSOUP 教程,JSOUP请求JSON ,JSOUP返回JSON 数据
CDN 请求返回 connection reset by peer,被拦截请求解决方案
JQuery Ajax四种写法,Ajax请求返回JSON 操作Demo
Java 之 HTTP请求乱码解决,GZIP 返回值乱码解决
Elasticsearch 随机返回数据 API
Httpclent 请求限制,判断返回类型和返回数据大小
Elasticsearch 聚合(aggregation)查询返回所有
SOJSON 使用又拍云 CDN 整体架构,解决百度 SEO 方案
天气API,全国天气 JSON API接口,可以获取十五天的天气预报
免费天气API,全国天气 JSON API接口,可以获取五天的天气预报
最新文章
Linux I/O重定向 4386
Ruby 循环 - while、for、until、break、redo 和 retry 2286
Node.js:全局对象 2174
如何使用终端检查Linux上的内存使用情况 1980
JavaScript对象详细剖析 1740
Python print() 函数 1752
PHP if/else/elseif 语句 1886
HTML5 Canvas弧线教程 1733
Java赋值运算符 2031
XML内部实体和外部实体 1972
最热文章
最新MyEclipse8.5注册码,有效期到2020年 (已经更新) 689030
苹果电脑Mac怎么恢复出厂系统?苹果系统怎么重装系统? 675464
免费天气API,天气JSON API,不限次数获取十五天的天气预报 637735
免费天气API,全国天气 JSON API接口,可以获取五天的天气预报 615590
Jackson 时间格式化,时间注解 @JsonFormat 用法、时差问题说明 558108
我为什么要选择RabbitMQ ,RabbitMQ简介,各种MQ选型对比 510360
Elasticsearch教程(四) elasticsearch head 插件安装和使用 481991
Jackson 美化输出JSON,优雅的输出JSON数据,格式化输出JSON数据... ... 272592
Java 信任所有SSL证书,HTTPS请求抛错,忽略证书请求完美解决 244996
Elasticsearch教程(一),全程直播(小白级别) 228629
支付扫码

所有赞助/开支都讲公开明细,用于网站维护:赞助名单查看

查看我的收藏

正在加载... ...