Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/json/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用Jersey在Java RESTful web服务中生成JSON和XML响应_Java_Json_Xml_Rest_Xml Parsing - Fatal编程技术网

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

使用Jersey在Java RESTful web服务中生成JSON和XML响应,java,json,xml,rest,xml-parsing,Java,Json,Xml,Rest,Xml Parsing,我们有一个方法,它返回一个字符串响应,该响应是使用 org.w3c.dom.Document。因此,默认响应是XML格式的。现在我们还需要支持JSON响应。由于我们使用org.w3c.dom.Document手动准备XML响应,而不是使用POJO,并使用@XmlRootElement对其进行注释,而且我们无法修改遗留代码,因此如何同时支持JSON和XML响应类型 @Produces({MediaType.APPLICATION_JSON,MediaType.APPLICATION_XML})

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

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

只需像上面那样注释方法,并在请求中使用headerAccept: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());
        }
    }
}
公共类主{
公共静态整型打印缩进系数=4;
公共静态字符串测试\u XML\u字符串=
“将其转换为JSON”;
公共静态void main(字符串[]args){
试一试{
JSONObject xmlJSONObj=XML.toJSONObject(测试XML字符串);
String jsonPrettyPrintString=xmlJSONObj.toString(漂亮的打印缩进系数);
System.out.println(jsonPrettyPrintString);
}捕获(JSONException je){
System.out.println(je.toString());
}
}
}

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

类似的内容,谢谢@Saurabh jhunhunwala。我们正在检查请求的Accept标头:headers.getRequestHeader(“Accept”).get(0)。如果是application/json,它将返回一个json响应。Else返回xml。