2013-07-04 73 views
5

在我當前的設置中,我使用Jersey 2.0和MOXy,如jersey docs中所述。我完全依賴 「自動發現的功能」,所以我不使用任何額外的配置或JAXB註釋。Moxy,JSON和Jersey 2.0不反序列化純字符串數組

我的任務是反序列化服務器端的字符串數組。客戶端發送的JSON消息:

["foo","bar"] 

而在服務器側下面的方法標頭應反序列化:

@POST 
@Path("/stringArray") 
@Produces(MediaType.APPLICATION_JSON) 
@Consumes(MediaType.APPLICATION_JSON) 
public Response stringArray(List<String> stringList) { 
    ... 
} 

問題: 的StringList的含量{NULL,NULL} ,所以元素的數量總是正確的,但是字符串被設置爲空。

與小包裝類相同的工作。在這裏,等級:

public static class Data { 
    public List<String> stringList; 
} 

更改梅索德簽名字符串數組(數據數據),並改變JSON消息:

{"stringList": ["foo","bar"]} 

是什麼這兩種方法之間的區別我怎麼可以得到純字符串數組工作?

更新: 所描述的問題是通過從答案固定@Blaise。但是,序列化POJO列表的密切相關的問題仍然不起作用。消息:

[org.glassfish.jersey.message.internal.MessageBodyProviderNotFoundException: MessageBodyWriter未找到媒體類型=應用/ JSON, 類型=類java.util.ArrayList,genericType =類 java.util中.ArrayList]

我發現再次使用包含List小包裝類唯一的解決辦法...

+0

一般來說它似乎是難以例如序列化/反序列化集合列表沒有包裝他們在一個類。有人可以證實嗎? – adler

+0

通過使用org.eclipse.persistence.core_2.5.1.v20130706-f712d02.jar和org.eclipse.persistence.moxy_2.5.1.v20130706-f712d02.jar而不是2.5.0版本解決了問題。感謝@blaise – adler

回答