2017-05-15 74 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。 –

相關問題