JSON 格式化完全指南

从基础语法到高级技巧,掌握 JSON 格式化的所有知识。本文详细介绍 JSON 格式化的作用、方法、常见问题和最佳实践。

JSON 工具 2026-05-27 8 分钟

JSON 格式化完全指南

JSON(JavaScript Object Notation)是当今最流行的数据交换格式。无论是前端开发、后端接口调试,还是配置文件编写,JSON 无处不在。本文将从基础到高级,全面介绍 JSON 格式化的知识。

什么是 JSON 格式化?

JSON 格式化(也称 JSON 美化)是将压缩或混乱的 JSON 数据转换为结构清晰、易于阅读的格式的过程。格式化后的 JSON 会添加适当的缩进、换行和空格,使数据层次一目了然。

格式化前:

{"name":"张三","age":28,"skills":["JavaScript","Vue","Node.js"],"address":{"city":"北京","district":"朝阳"}}

格式化后:

{
  "name": "张三",
  "age": 28,
  "skills": [
    "JavaScript",
    "Vue",
    "Node.js"
  ],
  "address": {
    "city": "北京",
    "district": "朝阳"
  }
}

为什么需要格式化 JSON?

1. 提高可读性

压缩的 JSON 在一行内显示所有数据,嵌套层级难以分辨。格式化后通过缩进可以快速理解数据结构。

2. 方便调试

在开发过程中,API 返回的 JSON 数据通常需要格式化后才能有效排查问题。格式化可以帮助你快速定位缺失的字段或错误的值。

3. 代码审查

在 Code Review 时,格式化的 JSON 配置文件更容易审查变更内容。

4. 文档生成

许多 API 文档工具要求 JSON 示例必须是格式化的,以便自动生成可读的文档。

JSON 基础语法

在使用格式化工具之前,了解 JSON 的基本语法规则很重要:

数据类型

类型 示例 说明
字符串 "hello" 必须用双引号
数字 42, 3.14 整数或浮点数
布尔值 true, false 只有这两个值
null null 空值
数组 [1, 2, 3] 有序集合
对象 {"key": "value"} 键值对集合

语法规则

  • 键名必须用双引号包裹
  • 字符串值必须用双引号包裹(不能用单引号)
  • 最后一个元素不能有逗号(trailing comma)
  • 不支持注释(///* */
  • 不支持 undefinedNaNInfinity

常见 JSON 错误

1. 单引号错误

// ❌ 错误
{'name': '张三'}

// ✅ 正确
{"name": "张三"}

2. 多余逗号

// ❌ 错误
{"name": "张三", "age": 28,}

// ✅ 正确
{"name": "张三", "age": 28}

3. 键名未加引号

// ❌ 错误
{name: "张三"}

// ✅ 正确
{"name": "张三"}

4. 注释

// ❌ 错误(JSON 不支持注释)
{
  "name": "张三" // 用户姓名
}

// ✅ 正确
{
  "name": "张三"
}

JSON 格式化方法

方法一:在线工具

使用 jsjson.com JSON 格式化工具,只需粘贴 JSON 数据即可一键格式化。优势:

  • 无需安装任何软件
  • 支持语法高亮和错误提示
  • 支持压缩和格式化双向转换
  • 纯前端处理,数据不上传服务器

方法二:编辑器插件

主流代码编辑器都支持 JSON 格式化:

  • VS Code:右键 → Format Document,或快捷键 Shift + Alt + F
  • WebStorm:Code → Reformat Code,或快捷键 Ctrl + Alt + L
  • Sublime Text:安装 Pretty JSON 插件

方法三:命令行

# 使用 Python
echo '{"name":"张三","age":28}' | python -m json.tool

# 使用 jq
echo '{"name":"张三","age":28}' | jq .

# 使用 Node.js
echo '{"name":"张三","age":28}' | node -e "process.stdin.on('data',d=>console.log(JSON.stringify(JSON.parse(d),null,2)))"

方法四:代码实现

JavaScript:

const formatted = JSON.stringify(obj, null, 2)

Python:

import json
formatted = json.dumps(obj, indent=2, ensure_ascii=False)

Java:

ObjectMapper mapper = new ObjectMapper();
String formatted = mapper.writerWithDefaultPrettyPrinter().writeValueAsString(obj);

JSON 压缩

与格式化相反,JSON 压缩是去除所有不必要的空格和换行,最小化数据体积。

压缩前(格式化):

{
  "name": "张三",
  "age": 28
}

压缩后:

{"name":"张三","age":28}

压缩 JSON 的常见场景:

  • API 响应传输(减少带宽)
  • LocalStorage 存储(节省空间)
  • 网络传输优化

JSON 校验

JSON 校验是检查 JSON 数据是否符合语法规范的过程。常见的校验内容:

  1. 语法正确性 - 是否符合 JSON 语法规则
  2. 数据类型 - 值的类型是否正确
  3. 必填字段 - 是否缺少必要字段
  4. 格式规范 - 如日期格式、邮箱格式等

可以使用 jsjson.com JSON 校验工具 快速检查 JSON 语法错误,精确定位错误位置。

最佳实践

1. 使用标准缩进

推荐使用 2 个空格作为缩进,这是大多数项目和工具的默认配置。

2. 保持一致性

在同一项目中,所有 JSON 文件应使用统一的格式化风格。

3. 编码规范

  • 使用 UTF-8 编码
  • 键名使用 camelCase 或 snake_case(保持统一)
  • 避免使用特殊字符作为键名

4. 版本控制

格式化后的 JSON 在 Git diff 中更容易查看变更,建议在提交前格式化 JSON 文件。

5. 自动化

配置 ESLint、Prettier 等工具自动格式化 JSON 文件,避免手动格式化的不一致性。

常见问题

Q: JSON 和 JavaScript 对象有什么区别?

A: JSON 是一种数据格式,而 JavaScript 对象是编程语言的数据结构。JSON 要求键名必须用双引号、不支持注释、不支持 undefined 和函数。

Q: JSON 支持注释吗?

A: 标准 JSON 不支持注释。如果需要注释,可以使用 JSONC(JSON with Comments)或 JSON5 格式。

Q: JSON 中的数字精度有问题怎么办?

A: 超过 Number.MAX_SAFE_INTEGER(2^53 - 1)的整数会丢失精度。解决方案是将大数字作为字符串传输,在使用时再转换。

Q: 如何处理 JSON 中的中文乱码?

A: 确保使用 UTF-8 编码。在代码中序列化时,Python 需要设置 ensure_ascii=False,Java 需要配置 SerializationFeature

Q: 格式化会改变 JSON 数据吗?

A: 不会。格式化只添加空格和换行,不会修改任何数据值。压缩同理,只去除空白字符。

总结

JSON 格式化是每个开发者的日常操作。选择合适的工具和方法可以显著提高开发效率。推荐使用 jsjson.com 的在线 JSON 工具,纯前端处理保障数据安全,支持格式化、压缩、校验等多种功能。


本文最后更新于 2026 年 5 月

📚 相关文章