JSON 实用技巧与指南

面向开发者的 JSON、YAML 与 API 数据实用文章。

JSON 第 0 位 Unexpected Token <:你拿到的是 HTML

“Unexpected token <” 错误表示 JSON.parse 收到的是一个 HTML 页面(404、登录跳转或错误的 URL),而不是 JSON。这里讲清楚原因,附上坏的和修好的 fetch 示例。

5 min read

JSON 第 0 位 Unexpected Token u:在解析 undefined

“Unexpected token u” 错误意味着你调用了 JSON.parse(undefined)。看清楚为什么 undefined 会变成 “undefined”、如何防御,以及一个安全解析助手函数。

5 min read

JSON 中未终止的字符串:原因与修复

JSON 中未终止的字符串意思是有一个开引号却没有闭引号 —— 通常是未转义的引号、原始换行符或被截断的数据。坏例子与修复示例。

5 min read

JSON 中错误的转义字符:原因、示例与修复方法

修复 JSON 中来自 \x 转义、Windows 路径、正则字符串、畸形 \u 以及双重编码 JSON 的「bad escaped character」错误。

12 min read

JSON 数据之后出现非空白字符:修复方法

这个错误意味着一个完整的 JSON 值后面还有多余内容 —— 拼在一起的对象、被当成单块解析的 NDJSON,或末尾的垃圾。如何找出并去掉多余数据。

5 min read

JSON Pretty Print vs JSON Format:有什么区别?

对 JSON 来说,pretty print、format 和 beautify 是同一回事。讲清楚为什么、真正的区别是什么(minify、validate、tree view),以及如何在线美化 JSON。

5 min read

JSON 树形查看器:以可折叠树浏览 JSON

把 JSON 看作交互式可折叠树。展开和折叠任意对象或数组,以浏览大型嵌套负载 —— 在浏览器中完成,无需上传。

6 min read

YAML 格式化器:格式化、重新缩进与校验 YAML

YAML 格式化器会重新缩进并规范化 YAML,让它既可读又便于 diff。学习缩进规则、类型陷阱,以及何时格式化、何时转换为 JSON。

6 min read

XML 转 JSON:属性、文本节点、数组与命名空间

把 XML 正确地转成 JSON:属性、文本节点、重复元素、命名空间如何映射 —— 带约定、边角情况以及 JS / Python 代码。

8 min read

JSON 转 XML:根元素、数组与属性映射

把 JSON 转成 XML:根元素、@ 属性、数组与转义——用 JS、Python 或在线完成。免费试用转换器。

7 min read

如何把 JSON 转成 CSV(以及反过来)

在 JavaScript、Python 和在线把 JSON 转成 CSV、CSV 转成 JSON。涵盖 array-of-objects 映射、引号规则、嵌套值与类型推断。

7 min read

如何校验 JSON:语法与 schema 校验

用 JSON.parse、Python 的 json.loads、jq 或浏览器校验 JSON 语法 —— 并学会用 JSON Schema 检查结构与类型。

8 min read

如何用 JSON.stringify 序列化 JSON

JSON.stringify 把一个值转成 JSON 字符串。学习 space 与 replacer 参数、toJSON 钩子,以及它会默默丢弃或抛错的值。

8 min read

JSON vs YAML:区别与各自适合的场景

JSON 与 YAML 对比:语法、类型、注释,以及像 Norway problem 这类坑。YAML 是 JSON 的超集 —— 何时选哪个、如何相互转换。

7 min read

如何解码 JWT 并读取其 claims

JWT 由三段 Base64url 组成。学习在 JavaScript 和 Python 里解码 header 与 payload —— 以及为什么解码一个 token 并不等于校验它。

8 min read

JSON Patch vs JSON Merge Patch:RFC 6902 vs 7396

JSON Patch (RFC 6902) 发送显式操作;JSON Merge Patch (RFC 7396) 叠加一个部分对象。对比两者并选择合适的那一种。

7 min read

如何把 CSV 与 XML 转成 JSON

在 JavaScript、Python 和浏览器里把 CSV 与 XML 转成 JSON。涵盖 array-of-objects 映射、XML 属性处理、以及类型推断的坑。

7 min read

jq 教程:过滤与转换 JSON

在命令行学 jq:安装、美化、选择、过滤、map 和编辑 JSON——附可复制的命令配方。

7 min read

如何从 JSON 生成 TypeScript 接口

将 JSON 转成 TypeScript 接口 —— 在线或代码均可。处理嵌套对象、可选与 nullable 字段,并保持类型同步。

10 min read

什么是 JSON Schema?一份带示例的实用指南

什么是 JSON Schema?描述并校验 JSON 结构——核心关键字、真实示例,以及在 JavaScript 和 Python 中校验。了解详情。

10 min read

如何压缩 JSON —— 以及什么时候应该这么做

压缩 JSON 会移除所有不必要的空白以减小体积、加快 API 响应。学习在 JavaScript、Python、命令行与浏览器中压缩 JSON —— 以及什么时候不必折腾。

9 min read

JSON 查看器 vs JSON 格式化器:有什么区别?

JSON 查看器 vs 格式化器:查看器渲染可交互树,格式化器美化输出文本。学习区别与使用时机。

8 min read

修复 “[object Object] is Not Valid JSON” 与其他 JSON 语法错误

遇到 “[object Object] is not valid JSON” 或 “expected a JSON object, array or literal”?学会这些错误的成因、如何修正 JSON 语法、修复尾随逗号,以及自动修复损坏的 JSON。

9 min read

JSON 修复解析器到底是怎么工作的

尾随逗号、单引号、未加引号的键、Python 字面量、markdown 代码围栏 —— 在线 JSON 修复工具都能处理。学习修复解析器如何工作、何时用,以及如何让敏感数据留在本地。

7 min read

JSON 格式示例:对象、数组与现实模式

可直接复制的 JSON 示例,涵盖每种数据类型、嵌套结构、REST API 响应、配置文件、日期格式与 GeoJSON —— 以及常见错误模式及其修复。

6 min read

如何格式化 JSON:美化、校验与清理 JSON 文件

在 JavaScript 里用 JSON.stringify、在 Python 里用 json.dumps、在命令行里用 jq,或在浏览器里即时格式化 JSON。包括键排序、把 YAML 与 CSV 转成 JSON,以及真实的前后对比示例。

8 min read

什么是 JSON?JSON 格式、语法与文件的完整指南

JSON(JavaScript Object Notation)是通用的数据交换格式。学习它的六种数据类型、让 JSON 严格的语法规则、.json 文件的用途,以及如何在各种语言中解析 JSON。

7 min read

为什么不要把敏感的 JSON 粘进在线工具

把 JWT、API 密钥或 PII 粘进在线 JSON 工具,可能经由服务器日志、缓存和索引泄露。为什么浏览器原生工具更安全。

7 min read

JSON 字符串字面量中的非法控制字符:修复方法

JSON 字符串里出现原始 tab、换行、NUL 字节或 ANSI 转义序列都会触发这个错误。学习为什么 JSON 规范禁止它们、它们如何混进来,以及如何剥除或转义。

6 min read

JSON 第 1 位 Unexpected Token o:原因与修复

那个小写的 “o” 是 “[object Object]” 的第二个字符。你把一个 JavaScript 对象传给了 JSON.parse() 而不是字符串。本文列出这个错误的所有变体,以及每个的一行修复。

5 min read

Unexpected End of JSON Input:为什么会出现以及如何修复

解析器在结构完成前耗尽了输入。原因从被截断的 API 响应到未闭合括号、再到空字符串都有。五种模式,五种修复。

5 min read

Base64 不是加密:它能藏住什么,藏不住什么

Base64 是编码不是加密。看看为何密码、JWT 载荷、API 密钥、Basic 认证头、URL 数据和日志在 Base64 后依然可读。

15 min read

如何比较两份 JSON 文件:算法与工具

纯文本 diff 会把键重排序误报为改动。真正的 JSON diff 如何工作:键规范化、LCS 行 diff、语义比较。

9 min read

JSON vs JavaScript 对象:为什么不允许单引号

很多开发者把 JS 对象字面量当作 JSON。它们并不一样:单引号、未加引号的键、尾随逗号、undefined、NaN —— 这里把每处区别配示例讲清楚。

7 min read

JSON 中的尾随逗号:为什么 { "a": 1, } 会抛错

JSON 对象或数组最后一项后面一个多余的逗号就会触发 SyntaxError。学习为什么 JSON 禁止尾随逗号、它们从哪来,以及如何去掉。

6 min read

如何修复 JSON.parse 的 “Unexpected Token” 错误

“Unexpected token <” 或 “Unexpected token u in JSON at position 0” —— 这类错误会让应用直接停摆。本文讲清楚每个变体的含义,以及具体如何修。

6 min read

在 JavaScript 中如何处理损坏的 JSON

JSON.parse() 毫不留情 —— 一个多余的逗号就能让应用崩溃。常见的 JSON 破损模式、try/catch 捕获错误,以及何时需要修复。

8 min read

JSON.parse Source Access: context.source, BigInts, JSON.rawJSON, and LLM JSON

Use JSON.parse reviver context.source and JSON.rawJSON safely: feature-detect support, rescue large numeric IDs, serialize BigInts, and harden repaired LLM JSON output.

12 min read