如何在线验证 JSON:工具与方法完全指南 2026

发布于: 2026-05-16 • 分类: 开发者工具 / JSON / Web 开发

为什么要验证 JSON?

JSON(JavaScript Object Notation)是当今 Web 上使用最广泛的数据格式。API、配置文件、数据库和数据管道都依赖格式正确的 JSON。一个缺少的逗号、多余的括号或未加引号的字符串就可能导致整个应用崩溃。因此在使用前验证 JSON 是任何开发工作流中的关键步骤。

本指南涵盖了验证 JSON 的所有方法——从免费在线工具到 JavaScript、Python 和命令行的编程验证。无论你在调试 API 响应、检查配置文件还是构建数据管道 都能在这里找到合适的方法。

方法一:在线 JSON 验证器(最快)

检查 JSON 是否有效的最快方法是使用在线工具。只需粘贴你的 JSON 就能获得即时反馈。

EasyTool.me JSON 格式化工具 — 粘贴你的 JSON 即可即时格式化、验证和高亮显示错误。完全在浏览器中运行 数据不会离开你的设备。主要功能包括:

方法二:JavaScript — JSON.parse()

在 JavaScript 中 内置的 JSON.parse() 方法是验证 JSON 的标准方式。如果字符串不是有效的 JSON 会抛出 SyntaxError

function isValidJSON(str) {
  try {
    JSON.parse(str);
    return true;
  } catch (e) {
    return false;
  }
}

// 使用示例
console.log(isValidJSON('{"name": "Alice", "age": 30}')); // true
console.log(isValidJSON('{name: "Alice"}'));               // false
console.log(isValidJSON('{"name": "Alice",}'));            // false(尾部逗号)

获取详细错误信息:

function validateJSON(str) {
  try {
    const parsed = JSON.parse(str);
    return { valid: true, data: parsed };
  } catch (e) {
    return {
      valid: false,
      error: e.message,
      position: e.message.match(/position (\d+)/)?.[1]
    };
  }
}

const result = validateJSON('{"name": "Alice", "age":}');
console.log(result);
// { valid: false, error: "Expected ':' after property name...", position: 24 }

方法三:Python — json.loads()

Python 的 json 模块提供了 json.loads() 来解析和验证 JSON 字符串。

import json

def is_valid_json(text):
    try:
        json.loads(text)
        return True
    except json.JSONDecodeError as e:
        print(f"无效 JSON: {e}")
        return False

# 使用示例
print(is_valid_json('{"name": "Alice", "age": 30}'))  # True
print(is_valid_json("{'name': 'Alice'}"))              # False(单引号)
print(is_valid_json('{"name": "Alice",}'))             # False(尾部逗号)

获取包含行号和列号的详细错误报告:

import json

def validate_json_detailed(text):
    try:
        data = json.loads(text)
        return {"valid": True, "data": data}
    except json.JSONDecodeError as e:
        return {
            "valid": False,
            "error": str(e),
            "line": e.lineno,
            "column": e.colno,
            "position": e.pos
        }

result = validate_json_detailed('{"name": "Alice"\n"age": 30}')
print(result)
# {'valid': False, 'error': 'Expecting : delimiter', 'line': 1, 'column': 16, 'position': 16}

方法四:命令行 — jq

jq 命令行工具非常适合在脚本和 CI/CD 管道中验证 JSON。

# 验证 JSON 文件
echo '{"name": "Alice"}' | jq empty

# 如果无效 jq 会打印错误:
echo '{name: Alice}' | jq empty
# parse error: Invalid numeric literal at line 1, column 6

# 验证并美化输出
cat config.json | jq .

# 在脚本中检查有效性
if jq empty config.json 2>/dev/null; then
    echo "有效的 JSON"
else
    echo "无效的 JSON"
fi

Python 的 json.tool 模块也可以作为命令行验证器:

# 使用 Python json.tool 验证
echo '{"name": "Alice"}' | python3 -m json.tool

# 无效 JSON 会报错
echo '{invalid}' | python3 -m json.tool
# Expecting property name enclosed in double quotes

方法五:JSON Schema 验证

语法验证只检查 JSON 是否格式正确。JSON Schema 则验证结构和内容——检查必填字段是否存在、值类型是否正确、约束条件是否满足。

{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "type": "object",
  "required": ["name", "email"],
  "properties": {
    "name": { "type": "string", "minLength": 1 },
    "email": { "type": "string", "format": "email" },
    "age": { "type": "integer", "minimum": 0, "maximum": 150 }
  },
  "additionalProperties": false
}

在 Python 中使用 jsonschema 进行 Schema 验证:

from jsonschema import validate, ValidationError

schema = {
    "type": "object",
    "required": ["name", "email"],
    "properties": {
        "name": {"type": "string"},
        "email": {"type": "string"},
        "age": {"type": "integer"}
    }
}

try:
    validate(instance={"name": "Alice", "email": "alice@example.com"}, schema=schema)
    print("验证通过!")
except ValidationError as e:
    print(f"验证失败: {e.message}")

常见 JSON 错误及修复方法

以下是最常见的 JSON 错误及其解决方案:

1. 尾部逗号

// 错误 — 尾部逗号
{"name": "Alice", "age": 30,}

// 正确
{"name": "Alice", "age": 30}

2. 单引号替代双引号

# 错误 — 单引号
{'name': 'Alice'}

# 正确 — 双引号
{"name": "Alice"}

3. 键名未加引号

// 错误 — 未加引号的键
{name: "Alice"}

// 正确
{"name": "Alice"}

4. JSON 中包含注释

// 错误 — JSON 不支持注释
{
  "name": "Alice" // 这是注释
}

// 正确 — 去掉注释或使用 JSONC/JSON5
{"name": "Alice"}

5. 项目之间缺少逗号

// 错误 — 缺少逗号
{"name": "Alice" "age": 30}

// 正确
{"name": "Alice", "age": 30}

在 CI/CD 中自动验证

将 JSON 验证添加到 CI/CD 管道中 在部署前捕获错误:

# GitHub Actions 示例
name: Validate JSON
on: [push]
jobs:
  validate:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
      - name: 验证所有 JSON 文件
        run: |
          find . -name "*.json" -exec python3 -m json.tool {} \;

常见问题

带注释的 JSON 有效吗?

无效。官方 JSON 规范(RFC 8259)不支持注释。如果需要注释 请使用 JSONC(带注释的 JSON)或 JSON5 它们是许多工具和编辑器支持的 JSON 超集。

JSON 可以用单引号吗?

不可以。JSON 规范要求键和字符串值都使用双引号。单引号在 JavaScript 对象中有效 但在 JSON 中无效。

null、undefined 和空字符串在 JSON 中有什么区别?

null 是有效的 JSON 值 表示"无"。undefined 在 JSON 中无效(它是 JavaScript 概念)。空字符串 "" 是有效的 JSON 但表示空文本值 而不是"无"。

如何验证超大的 JSON 文件?

对于大文件(100MB+)使用流式解析器如 jq 或 Python 的 ijson 库 而不是将整个文件加载到内存中。

快速参考:各语言验证 JSON

立即试试: 使用 EasyTool.me JSON 格式化工具 即时验证、格式化和美化你的 JSON。无需注册 无需上传 完全在浏览器中运行。