我有一个RESTful Web服务,我正在POST {PUTing Entry
个对象。但是,它正在寻找JSON和XML的根元素,例如:
{ "Entry": {
"name": "John Doe",
"phone_number": "555-1234",
.
.
.
}
但是,根据我看到的使用ContextResolver
的示例,在阅读或返回TelephoneBookEntry
个对象时,不应该需要Entry
根元素。
@Provider
@Produces({ APPLICATION.XML, APPLICATION.JSON })
public class JaxBEntryContextResolver implements ContextResovler<JAXBCONTEXT> {
private static final Class<?>[] classes = {Entry.class};
private static JAXBContext context;
static {
try {
context = JAXBContext.newInstance(classes);
} catch (JAXBException e) {
}
}
public JaxBEntryContextResolver() {
}
@Override
public JAXBContext getContext(Class<?> type) {
JAXBContext ret = null;
if(Arrays.asList(classes).contains(type)) {
ret = context;
}
return ret;
}
}
@XmlRootElement
@XmlAccessorType(XmlAccessType.FIELD)
public class Entry {
@XmlElement
private String name;
@XmlElement
private String phone_number;
.
.
.
}
我认为我的ContextResolver
课程非常标准,所以我不确定会出现什么问题。我希望能够POST JSON或XMl,而无需root元素。
更新:我还尝试过不使用`XmlRootElement,但这没有做任何事情。另外,我使用的是Jersey 2.17,所以我不确定为什么在默认情况下不会发生解包。
答案 0 :(得分:0)
尝试将根元素的名称添加到XmlRootElement注释
@XmlRootElement(name = "TelephoneBookEntry")