Jersey不会解组Java泛型类型

时间:2011-05-27 10:40:34

标签: java generics jaxb jersey

我希望有一个服务可以回复POST请求/联系以下有效负载:

{"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 个答案:

答案 0 :(得分:1)

看起来您正在使用自然 JSON编码 - 为了能够处理它,您应该按照here所述配置Jersey。

在用于配置的一个单一bean中的某些@PostConstruct中,包含以下调用:

JSONConfiguration.natural().build();