【发布时间】:2014-01-07 18:04:23
【问题描述】:
我收到一个包含 xml 或 json 内容的字符串。
如果 String 包含 json 内容,我使用 jackson(java api) 将 JSON 转换为 Java 对象
如果它包含 xml 内容,我会使用 JAXB 将 XML 内容转换为 Java 对象(Unmarshalling)。
如何检查我是否在该字符串中收到 xml 或 json?
【问题讨论】:
我收到一个包含 xml 或 json 内容的字符串。
如果 String 包含 json 内容,我使用 jackson(java api) 将 JSON 转换为 Java 对象
如果它包含 xml 内容,我会使用 JAXB 将 XML 内容转换为 Java 对象(Unmarshalling)。
如何检查我是否在该字符串中收到 xml 或 json?
【问题讨论】:
如果您知道该字符串的编码(或者是 ASCII 或 UTF),那么查看该字符串的第一个字符就足够了。
如果字符串开始
< 你有XML 结构。 {、[ 或other allowed start characters,您就有了一个JSON 结构。对于 JSON,您还必须在查看“第一个”字符之前去除空格(如果您收到的字符串可能包含额外的空格)。
虽然 JSON 数据结构以 null、true、false 开头是合法的,但如果您对自己的数据结构有所了解,则可以避免这些情况。
因此,基本上您可以检查第一个字符是否为<,在这种情况下将其视为 XML。在其他情况下,将其视为 JSON,如果它不是合法的 JSON 语法,则让 jackson 触发一些异常。
【讨论】:
[ 开头。
{,但允许其他人,我会相应地更新答案。
XML 文档实体(通俗的说法是 XML 文档)必须以“
根据 ECMA-404,JSON 文本以零个或多个空格字符开头,后跟以下之一:
{ [ " 0-9 - true false null
所以你最简单的方法就是测试if(s.startsWith("<")
【讨论】: