2012-03-24 95 views
3

我正在使用JAX-RS构建REST API。我有POST消耗的JSON元素:使用JAX-RS解析JSON

元素是一个类:

​​

我有一个这样的方法:

@POST 
@Consumes({MediaType.APPLICATION_JSON}) 
public Response transactionRequest(EventData insert){ 
....} 

如果我张贴EventData的JSON字符串,工作正常,但如果我切换到:

@POST 
@Consumes({MediaType.APPLICATION_JSON}) 
public Response transactionRequest(ArrayList<EventData> insert){ 
....} 

并发送像这​​样的JSON字符串"{eventData:[{start:x,end:y,persons:[....]}]"它将生成ArrayList及其EventData对象,但EventData对象变量为null

任何人都可以帮忙吗?

回答

1

您需要发送由代表EventData类的JSON对象组成的JSON数组。

您给出的示例不是这样的JSON数组,而是具有包含JSON数组的名为'eventData'的单个属性的JSON对象。

尝试是这样的(基于您的EventData类):

[ 
    { "start":1, "end":2, "persons":[] }, 
    { "start":3, "end":4, "persons":[] } 
] 

注意,没有你的EventData类的记载,因为JSON没有命名类型的概念 - 它只是对象和数组对象;只有对象的属性才有名称。

+0

com.sun.jersey.json.impl.reader.JsonFormatException:冒号而不是“]” – 2012-03-24 17:55:54

+0

我的答案中的JSON是一个非常粗略的示例,我建议使用返回List的JAX-RS方法的输出带有一些虚拟物品的。我会在一分钟内为你的'EventData'类写一些有效的JSON :) – 2012-03-24 17:58:23

+0

我用有效的JSON示例更新了我的答案。 – 2012-03-24 18:01:48