JSON 格式化完全指南

世界杯球童 2026-08-28 08:38:19 3653

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)

不支持注释(// 或 /* */)

不支持 undefined、NaN、Infinity

常见 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 数据是否符合语法规范的过程。常见的校验内容:

语法正确性 - 是否符合 JSON 语法规则

数据类型 - 值的类型是否正确

必填字段 - 是否缺少必要字段

格式规范 - 如日期格式、邮箱格式等

可以使用 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 月

站点统计