使用JSON数据报错和方法
Posted 浅笑心柔
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了使用JSON数据报错和方法相关的知识,希望对你有一定的参考价值。
今天自己写了一个JSON的例子,可以一调用就出了问题,报下面这个异常:
Java.lang.ClassNotFoundException: org.apache.commons.lang.exception.NestableRuntimeException
上网上搜了一下才知道原来在使用JSON的使用的时候,不光要导入JSON这个包,同时还要导入另外三个包
总之,共需要下面的 jars,json-lib方可使用:
commons-beanutils-1.7.0.jar
commons-lang-2.1.jar
ezmorph-1.0.2.jar
json-lib-1.1-jdk15.jar
但是又出现如下问题:
java.lang.ClassNotFoundException: org.apache.commons.logging.LogFactory
导入commons-logging-1.1.1.jar
又出现如下问题:
java.lang.NoClassDefFoundError: Could not initialize class net.sf.json.JSONArray
导入commons-collections 3.2
Ok
使用json常用到的包有以下六个。
- commons-logging-1.0.4.jar
- commons-lang-2.3.jar
- commons-collections-3.2.jar
- commons-beanutils-1.7.0.jar
- json-lib-2.2.1-jdk15.jar
- ezmorph-1.0.4.jar
另外如果commons-collections-3.2.jar没有或版本不对的话会出现
org/apache/commons/collections/map/ListOrderedMap这个异常。
2、在spring的配置文件中加入<mvc:annotation-driven />这句,它提供了读取jason的支持
3、使用springMVC的@ResponseBody注解@responsebody表示该方法的返回结果直接写入HTTP response body中
一般在异步获取数据时使用,在使用@RequestMapping后,返回值通常解析为跳转路径,加上@responsebody后返回结果不会被解析为跳转路径,而是直接写入HTTP response body中。比如异步获取json数据,加上@responsebody后,会直接返回json数据。
4、在以上配置都正确的情况下,我的项目还是不能返回json串。报错:The resource identified by this request is only capable of generating responses with characteristics not acceptable according to the request "accept" headers ()。
今天终于在一个外文网站找到答案,是由于spring版本的问题引起的。我之前一直用的是3.0.0的版本。就是因为这个版本的问题。于是果断去官网下载3.2版本的,一切正常运行,成功返回json数据。
<!-- 避免IE执行AJAX时,返回JSON出现下载文件 -->
<bean id="mappingJacksonHttpMessageConverter" class="org.springframework.http.converter.json.MappingJacksonHttpMessageConverter">
<property name="supportedMediaTypes">
<list>
<value>text/html;charset=UTF-8</value>
</list>
</property>
</bean>
<!-- 启动spring MVC的注解功能,完成请求和注解POJO的映射 -->
<bean class="org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter">
<property name="messageConverters">
<list>
<ref bean="mappingJacksonHttpMessageConverter" /><!-- json转换器 -->
</list>
</property>
</bean>
去掉 <mvc:annotation-driven/>
以上是关于使用JSON数据报错和方法的主要内容,如果未能解决你的问题,请参考以下文章
毕设扫描器参数Fuzz第一篇:数据的定义读取和装配(爬虫数据和Payload数据)
Jquery ajax 请求跨域获取json数据,数据可以获得,但json解析的时候报错,请问有啥方法?
查询复杂对象用respsbody转换成json串时,mybatis的延迟加载报错的解决方法