java - 如何从 Apache CXF REST 服务返回 XML 并将其转换为 json?

标签 java json web-services cxf jax-rs

我有一个使用 Apache CXF 和 Spring 构建的简单 REST 服务。我正在利用扩展映射内容根据 URL(http://.../hello.json 等)返回 json 或 xml。当返回 JAXB 注释的 Java 类时,这非常有效。

有没有一种简单的方法可以让 Apache CXF 自动将手工制作的 XML 转换为 json?我需要从服务中返回什么?

我知道我可以按如下方式返回 XML,但这不会自动将 XML 转换为 json:

public Response get() {
    return Response.status(200).type(MediaType.TEXT_XML).entity("<hello>world</hello>").build();
}

我将从文件系统或其他存储中返回静态 XML 文档。我需要能够返回 json。

最佳答案

我最终采取了不同(更好)的方法。 XML 文档由 servlet 提供,并使用以下代码转换为 json:

public void convertXmlToJson(InputStream in, OutputStream out) throws XMLStreamException {
    XMLEventReader xmlIn = XMLInputFactory.newFactory().createXMLEventReader(in);
    OutputStreamWriter osw;
    try {
        osw = new OutputStreamWriter(out, "UTF8");
    } catch (UnsupportedEncodingException e) {
        throw new RuntimeException(e.toString(), e); // not possible really
    }
    MappedXMLStreamWriter jsonOut = new MappedXMLStreamWriter(new MappedNamespaceConvention(), osw);
    AbstractXMLEventWriter xmlOut = new AbstractXMLEventWriter(jsonOut);
    while (xmlIn.hasNext()) {
        XMLEvent ev = xmlIn.nextEvent();
        if (ev instanceof Characters && ((Characters)ev).isWhiteSpace()) {
            continue;
        }
        xmlOut.add(ev);
    }
    xmlOut.close();
}

关于java - 如何从 Apache CXF REST 服务返回 XML 并将其转换为 json?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5497255/

相关文章:

java - 带装配模块的 Gradle Spring Boot

java - 如何编写使用 json 格式作为对象列表的 REST API 方法

java - 如何使用 Java 监控我的网络连接?

javascript - 在 Javascript 中解析 Google Latitude JSON(没有 PHP)

javascript - 如何在html5音视频播放器中回显php数组?

java - @JsonFormat 不适用于自定义序列化器

java - 单击 html 中的 anchor 调用文件下载 servlet?

java - CXF 网络服务节流

c# - 选择性 POCO 属性

c# 如何使用 HTTP POST multipart/form-data 将文件上传到 ashx