我正在编写一个函数来检查输入字符串是有效的JSON还是有效的XML,或者两者都没有.我在这里发了一个帖子.但显然帖子中的答案是不正确的,因为它们只检查字符串是否以<或开头{,这不能保证字符串是有效的 JSON或有效的 XML.
我自己有一个解决方案,那就是:
public static String getMsgType(String message) {
try {
new ObjectMapper().readTree(message);
log.info("Message is valid JSON.");
return "JSON";
} catch (IOException e) {
log.info("Message is not valid JSON.");
}
try {
DocumentBuilderFactory.newInstance().newDocumentBuilder().parse(new InputSource(new StringReader(message)));
log.info("Message is valid XML.");
return "XML";
} catch (Exception e) {
log.info("Message is not valid XML.");
}
return null;
}
Run Code Online (Sandbox Code Playgroud)
我想知道是否有更好或更短的解决方案?谢谢.
首先,我认为您不必重新编写 JSON 或 XML 验证的代码。它已经可用,经过充分测试并且经过充分优化。
如果是 JSON: 您可以使用此处的 JSONObject 。这是有关该内容的演示。
对于 XML :如果您想检查格式良好的 XML,您可能应该使用 DocumentBuilder 。演示:
DocumentBuilderFactory dbFactory = DocumentBuilderFactory.newInstance();
DocumentBuilder dBuilder = dbFactory.newDocumentBuilder();
Document doc = dBuilder.parse(XmlSourceFile);
Run Code Online (Sandbox Code Playgroud)
尝试解析,如果没有失败,那么您就可以使用 XML 了。dBuilder.parse()根据您的适合情况尝试重载方法
| 归档时间: |
|
| 查看次数: |
13436 次 |
| 最近记录: |