2011-05-27 55 views
3

我想有一個答案,以POST請求上,使用下列有效載荷/接觸的服務:澤西並不解組的Java泛型類型

{"records":[{"firstname":"John","lastname":"Doe"}]} 

理想的情況下,記錄應該是各種類型的包裝:聯繫人,訂單等這就是爲什麼我想使用泛型類型,但澤西似乎不能解開它。這裏是我的代碼:

@Controller 
@Path("/contact") 
public class ContactResource { 

@Autowired 
private ContactService contactService; 

@POST 
@Consumes(MediaType.APPLICATION_JSON) 
@Produces(MediaType.APPLICATION_JSON) 
public List<Contact> saveContact(final Records<Contact> contact) { 
    return Arrays.asList(contactService.saveContact(contact.records.get(0))); 
} 
} 


@XmlRootElement 
public class Records<T> { 
    public List<T> records; 
} 

看來,使用自定義javax.ws.rs.ext.MessageBodyReader可以解決我的問題。正確?

回答

1

它看起來像你正在使用天然 JSON編碼 - 爲了能夠處理它,你應該配置澤西如here描述。

在用於配置的單豆的一個部分@PostConstruct,包括以下調用:

JSONConfiguration.natural().build();