为什么String“\"[]\"”是有效的JSON?

o2g1uqev  于 5个月前  发布在  其他
关注(0)|答案(1)|浏览(67)

为什么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字符串。

hrysbysz

hrysbysz1#

因为这个例子归结为-"literary whatever you want here"。你的变量jsonString1保存的值是-"[]"(引号 * 是JSON的一部分!)。specification表示(几乎)任何用双引号括起来的东西都是有效的字符串,其余的应该被转义为字符串的一部分。同时检查this
从规范(2.5.字符串):
字符串的表示与C语言家族中使用的约定类似,字符串以引号开头和结尾。
因此,值是一个字符串和一个有效的JSON。

相关问题