使用Jersey

时间:2017-05-15 08:08:29

标签: java json xml rest xml-parsing

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

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

只需通过注释上述方法并在请求中使用标题 接受:application / json 就会导致错误:意外'<'

1 个答案:

答案 0 :(得分:1)

我希望你在寻找

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条件,检查响应类型。