首页 > Web开发 > 详细

如何解决jersey框架中以json格式返回数组,当数组中元素一个时json格式不对

时间:2014-02-25 23:19:09      阅读:706      评论:0      收藏:0      [点我收藏+]

     bubuko.com,布布扣jersey 是oracle 出的一个较好的REST框架。使用此框架方便地为我们架设Rest服务。它可以作为一个数据接口的框架,根据配置及请求参数,可灵活地返回不同格式的数据。

若不会搭建,亲参考站内的如何搭建请参考《如何搭建jersey的REST应用》文章。

  本人在使用jersey框架中遇到一个问题比较棘手,就是当以json格式返回数组,同时数组中元素只有一个时,返回json格式数据不是我们期望的。错误现象如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
{
  "ResultCode": "00000",
  "ResultDesc": "成功",
  "Count": "4",
  "PageCount": "4",
  "CountInPage": "1",
  "PageIndex": "1",
  "Languages": {
    "Language": {
      "PKID": "7",
      "Name": "国语",
      "Description": "国语"
    }
  }
}

以上是单个数据时,框架返回的json数据,我们期望的是Language数组,而不是Language对象。

 

当返回的数组中是多个数据(即本示例中返回多个语言)时,返回格式正常。正确现象如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
{
  "ResultCode": "00000",
  "ResultDesc": "成功",
  "Count": "4",
  "PageCount": "2",
  "CountInPage": "3",
  "PageIndex": "1",
  "Languages": {
    "Language": [
      {
        "PKID": "7",
        "Name": "国语",
        "Description": "国语"
      },
      {
        "PKID": "8",
        "Name": "0",
        "Description": "0"
      },
      {
        "PKID": "9",
        "Name": "中文",
        "Description": "中文"
      }
    ]
  }
}

 

解决方案:

 

在web.xml中Jersey的拦截器进行配置,增加 org.codehaus.jackson.jaxrs 参数值,样例如下:

bubuko.com,布布扣

 

见证奇迹的时刻到了:)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
{
  "ResultCode": "00000",
  "ResultDesc": "成功",
  "Count": 4,
  "PageCount": 4,
  "CountInPage": 1,
  "PageIndex": 1,
  "Languages": {
    "Language": [
      {
        "PKID": 7,
        "Name": "国语",
        "Description": "国语"
      }
    ]
  }
}

  以上内容希望对大家有帮助。

如何解决jersey框架中以json格式返回数组,当数组中元素一个时json格式不对

原文:http://www.cnblogs.com/swpk/p/3566536.html

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