You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

为何字符串\"[]\"被fastjson与Jackson判定为合法JSON?

为什么字符串"[]"被判定为合法JSON?

你给出的测试代码中,变量jsonString1的实际内容是**"[]"**(外层双引号是Java字符串的转义写法,对应JSON里的一个字符串值),这个内容完全符合JSON规范,所以fastjson和Jackson都判定它合法,具体原因如下:

  1. JSON允许单个基本类型作为完整文档
    JSON规范并不强制要求文档必须是对象{}或数组[],单个的字符串、数字、布尔值、null都可以作为合法的独立JSON文档。你这里的"[]"就是一个单独的JSON字符串值,属于合法的JSON结构。

  2. 该字符串符合JSON字符串的格式要求
    JSON字符串的规则很明确:

  • 必须用双引号包裹
  • 内部的普通字符(比如[、])不需要转义,只有双引号、反斜杠、换行/制表符这类控制字符才需要转义。
    你这个字符串正好满足这些要求,是一个标准的合法JSON字符串。

补充说明:如果你的预期是验证空数组[],那Java变量应该定义为String jsonString1 = "[]";(不带外层的双引号转义),这同样是合法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

内容的提问来源于stack exchange,提问作者lianhui.klh

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.04 10:25:17