我有从 Web 服务返回的以下 json 字符串。 JAXB 带注释的实体必须是什么样子?我的问题:json 没有任何“外部”根元素。
{
"Header": "head",
"ProductIdentifier": "WLW",
"Version": "2"
}
//JAXB:
@XmlRootElement
class JsonVO {
private String header, productIdentifier, version;
//constructor, getter, setter
}
解码:
builder.get(JsonVO.class);
结果:
org.apache.cxf.jaxrs.utils.JAXRSUtils logMessageHandlerProblem
Schwerwiegend: No message body reader has been found for class com.craps.service.Reseed, ContentType: application/json
最佳答案
使用JSON-P ,您将无法直接将 JSON 响应绑定(bind)到 JAXB 带注释的 bean。您可以使用MOXy来做到这一点,我用它来达到这个目的。
首先,将 MOXy 依赖项添加到您的项目中。如果使用Maven,可以添加:
<dependency>
<groupId>org.eclipse.persistence</groupId>
<artifactId>eclipselink</artifactId>
<version>2.5.1</version>
</dependency>
当您使用服务时,向您的客户端注册 MOXyJsonProvider:
client.register(MOXyJsonProvider.class);
MOXyJsonProvider 默认支持没有根元素的 JSON,因此您不需要任何其他配置。
关于java - 如何将json转换为没有根元素的实体?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21733841/