2017-05-15 73 views
0

我们提供了一种方法,它返回使用 org.w3c.dom.Document形成的字符串响应。因此默认响应是XML格式。现在我们还需要支持JSON响应。由于我们使用org.w3c.dom.Document手动准备XML响应,而不是使用POJO并使用@XmlRootElement对其进行注释,并且我们无法修改遗留代码,因此如何同时支持JSON和XML响应类型?使用Jersey在Java REST风格的Web服务中生成JSON和XML响应

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

只需通过注释的方法类似上面,用头接受:在错误应用/ JSON在要求的结果:意外“<”

+1

类似的东西[here](http://stackoverflow.com/questions/7101000/properly-return-org-w3c-dom-document-as-json-using-jersey) –

+0

谢谢@Pete –

回答

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,但切记要添加一个i f条件,检查响应类型。

+0

谢谢@ Saurabh Jhunjhunwala。我们正在检查请求的Accept头:headers.getRequestHeader(“accept”)。get(0)。如果它是application/json,它将返回一个json响应。否则返回xml。 –

相关问题