java - 使用 Jersey 在 Java RESTful Web 服务中生成 JSON 和 XML 响应

标签 java json xml rest xml-parsing

我们有一个方法,它返回一个字符串响应,该响应是使用 org.w3c.dom.Document。因此默认响应采用 XML 格式。现在我们还需要支持 JSON 响应。由于我们使用 org.w3c.dom.Document 而不是使用 POJO 手动准备 XML 响应,并使用 @XmlRootElement 对其进行注释,并且我们无法修改遗留代码,因此如何同时支持 JSON 和 XML响应类型?

@Produces({MediaType.APPLICATION_JSON,MediaType.APPLICATION_XML})

仅通过像上面这样注释方法并在请求中使用 header Accept : application/json 会导致错误:Unexpected '<'

最佳答案

我希望你正在寻找

public class Main {

    public static int PRETTY_PRINT_INDENT_FACTOR = 4;
    public static String TEST_XML_STRING =
        "<?xml version=\"1.0\" ?><test attrib=\"moretest\">Turn this to JSON</test>";

    public static void main(String[] args) {
        try {
            JSONObject xmlJSONObj = XML.toJSONObject(TEST_XML_STRING);
            String jsonPrettyPrintString = xmlJSONObj.toString(PRETTY_PRINT_INDENT_FACTOR);
            System.out.println(jsonPrettyPrintString);
        } catch (JSONException je) {
            System.out.println(je.toString());
        }
    }
}

您可以使用逻辑将 XML 响应转换为 JSON,但请记住添加 if 条件,检查响应类型。

关于java - 使用 Jersey 在 Java RESTful Web 服务中生成 JSON 和 XML 响应,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43974331/

相关文章:

java - 注入(inject)问题(使用 vaadin)

android - 向服务器发送数据后如何在下一个 Activity 中打印响应?

c# - H结果 : 0xC00CE556 - Loading string to XML

java - 具有多个元素的 xml 的 JAXB Xml 架构

java - 在布局和 ScrollView 底部添加按钮

用于 CSS 清理的 Java 库

java - Java 的 EnumSet 是可变的吗?

安卓改造2 |从 JSON 响应中获取列表数据

javascript - 如何在 JSON 中获取随机值

javascript - XPath 不从文档返回结果