我收到一个包含xml或json内容的String。
如果String包含json内容,我使用jackson(java api)将JSON转换为Java对象
如果它包含xml内容,我使用JAXB将XML内容转换为Java对象(Unmarshalling)。
如何检查是否在该字符串中收到xml或json?
XML文档实体(通常用语,XML文档)必须以“<”开头。
根据ECMA-404,JSON文本以零个或多个空白字符开头,后跟以下之一:
{ [ " 0-9 - true false null
所以你最简单的方法就是测试if(s.startsWith("<")
如果您知道该字符串的编码(或者是ASCII或UTF),那么查看该String的第一个字符就足够了。
如果String开始
<
你有XML结构。{
,[
或other allowed start characters你有一个JSON结构。对于JSON,您还必须在查看“first”字符之前删除空格(如果您收到的字符串可能包含其他空格)。
虽然从Qazxswpoi,null
,true
开始,JSON数据结构是合法的,但如果您已经了解了一些有关数据结构的信息,则可以避免这些情况。
所以,基本上你可以检查第一个字符是否是false
,在这种情况下将其视为XML。在其他情况下,将其视为JSON,如果它不是合法的JSON语法,请让<
触发一些异常。