为什么fastjson和Jackson都认为字符串"\"[]\""
是有效的JSON?
@Test
public void validJSON() {
String jsonString1 = "\"[]\"";
System.out.println("fastjson: " + JSON.isValid(jsonString1));
ObjectMapper objectMapper = new ObjectMapper();
boolean flag = false;
try {
JsonNode jsonNode1 = objectMapper.readTree(jsonString1);
flag = true;
} catch (Exception e) {
flag = false;
}
System.out.println("jackjson: " + flag);
}
字符串
结果:
fastjson: true
jackjson: true
型
我想知道为什么"\"[]\""
是一个有效的JSON字符串。
1条答案
按热度按时间hrysbysz1#
因为这个例子归结为-
"literary whatever you want here"
。你的变量jsonString1
保存的值是-"[]"
(引号 * 是JSON的一部分!)。specification表示(几乎)任何用双引号括起来的东西都是有效的字符串,其余的应该被转义为字符串的一部分。同时检查this。从规范(2.5.字符串):
字符串的表示与C语言家族中使用的约定类似,字符串以引号开头和结尾。
因此,值是一个字符串和一个有效的JSON。