首页 > 其他 > 详细

java rest框架jersey数组单记录问题解决

时间:2014-02-26 00:02:40      阅读:554      评论:0      收藏:0      [点我收藏+]

 JAVA数据接口采用jersey技术,可以返回xml,json等格式,可以根据客户端请求accept,如:Application/json,Application/xml 来得到不同的接口数据,非常好用,可是此框架有个缺陷,就是当返回json,如果是数组,只有一条记录的情况下,会有没[],如:我需要的返回格式是:

1
{"items":[{"id":1,"name":"testname"}]}

 而接口实际返回的是:

1
{"items":{"id":1,"name":"testname"}}

 对于这种数组变单对象,常常引起客户端处理异常,解决此问题方法如下:

  在Jersey的拦截器,进行org.codehaus.jackson标准转换,在web.xml中配置修改如下:

bubuko.com,布布扣
 <servlet>
  <servlet-name>test Service</servlet-name>
  <servlet-class>com.sun.jersey.spi.container.servlet.ServletContainer</servlet-class>
  <init-param>
   <param-name>com.sun.jersey.config.property.packages</param-name>
   <param-value>com.test.api;org.codehaus.jackson.jaxrs</param-value>
  </init-param>
  <load-on-startup>1</load-on-startup>
 </servlet>
bubuko.com,布布扣

重点是在后面加;org.codehaus.jackson.jaxrs,当然jackson相关jar包也需要引入,否则会发生异常。相关工作做完后,重启项目,返回的json就出现[]了。

此问题解决后,也解决了json根级目录不能使用数组的问题,比如,我需要返回的是:

[{"id":1,"name":"testname1"},{"id":2,"name":"testname2"}]

但实际返回的却是:

{"id":1,"name":"testname1"},{"id":2,"name":"testname2"}

加入org.codehaus.jackson标准转换后,此问题也就解决了,返回正常。

这只是其中一种解决方案,个人觉得这个比较简单容易,还有重写处理方法的。详见:

http://stackoverflow.com/questions/2199453/how-can-i-customize-serialization-of-a-list-of-jaxb-objects-to-json/3143214#3143214

java rest框架jersey数组单记录问题解决

原文:http://www.cnblogs.com/kinms/p/3566634.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!