java - 如何将json转换为没有根元素的实体?

标签 java jax-ws cxf

我有从 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/

相关文章:

java - jax-ws webservice 中的泛型类会发生什么变化?

java - Eclipse Java CXF 2.7.9 上的 Webclient - 修复格式错误的 .wsdl 文件

web-services - 使用 CXF、Spring 和 JAX-WS 的契约优先 Web 服务

java - 为什么在使用 JAXB 数据绑定(bind)部署任何服务时 JAX-WS 会卡住?

java - 如何使用 `onSaveInstanceState`?

java - JPA persistence.xml - 从引用的库添加 DAO

java - 使用 Blowfish 错误的加密和解密 - 使用填充密码解密时输入长度必须是 8 的倍数

java - 忽略 JAX-WS 客户端的 XML 验证

Apache cxf java 客户端 + ntlm 身份验证和多用户支持

java - nutch content.getContent() 无法返回完整结果