2012-03-24 100 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