我们有一个方法,它返回一个字符串响应,该响应是使用 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/