JSON 转 JavaScript 对象转换器
严格 JSON 可以用 JSON.parse 转换为 JavaScript 对象。JavaScript 对象字面量则需要先整理一遍才能成为合法 JSON。
在 JavaScript 里转换 JSON
如果输入已经是合法 JSON,最安全的转换器是 JSON.parse(jsonText)。它会返回普通的 JavaScript 对象、数组、字符串、数字、布尔或 null,并且不会执行任何代码。
JSON 输入
{ "name": "Ada", "active": true, "skills": ["math", "notes"] }
JavaScript 用法
const user = JSON.parse(jsonText); console.log(user.name);
对象字面量输入则不一样
{ name: 'Ada', active: true } 这样的 JavaScript 对象字面量不是 JSON。在用 JSON.parse 之前,要先修复未加引号的键、把单引号换成双引号、去掉注释和尾随逗号。
何时不要用 eval
不要用 eval 把未知文本变成对象。eval 会执行代码,而 JSON.parse 只解析数据 —— 这正是严格 JSON 在 API 负载、配置、日志和粘贴片段中更安全的原因。
边界情况:日期、undefined、函数
JSON 没有 Date、undefined、函数这些类型。日期通过 ISO 字符串往返;undefined 会在 stringify 时被丢弃;函数完全无法表示。如果 JavaScript 对象里包含这些值,转换出来的 JSON 只是一个有损快照 —— 必要时,在 JSON.parse 里通过 reviver 函数显式恢复类型。
TypeScript 与类型推断
JSON.parse 的返回类型是 'any',因为解析器无法提前知道形状。要获得带类型的访问,可以在用 zod、io-ts 这样的 schema 库校验后写 JSON.parse(text) as User;也可以用本站的 JSON 转 TypeScript 工具,从样例生成接口。
反向:对象转 JSON
JSON.stringify(value, null, 2) 从 JavaScript 值生成格式化的 JSON。它会默默丢弃 undefined、函数和 Symbol 键;遇到循环引用会抛错。第二个参数可 以传 replacer 函数来控制保留哪些字段 —— 在把对象发出去之前剥离内部细节时很有用。
JSON 修复指南
主题中心
- JSON Parse Errors: Read the Message, Jump to the Fix
- Fix Invalid JSON: From 'What's Wrong' to a Clean File
- JSON Formatter, Validator, Viewer: Pick the Right Tool
- Repair LLM JSON Output: Handling Almost-JSON from AI
- Privacy: JSON Tools That Don't Leave Your Browser
- JSON Interop: YAML, CSV, XML, JWT, Schema
具体指南
- 如何解码 Base64 字符串(以及 JWT Payload)
- URL 编码:百分号编码查询参数与路径
- 将 YAML 转为 JSON(并避免缩进错误)
- 将 JSON 转为 CSV:把对象数组扁平化
- 将 JSON 转为 XML:根元素、属性与数组
- 将 JSON 转义为字符串字面量(并解码双重编码的 JSON)
- 修复 JSON 中的尾随逗号
- 修复 JSON 中的单引号
- 修复 JSON 中未加引号的键
- 修复 LLM 输出的 JSON
- 修复 JSON 解析错误:Expected Property Name
- JSON 与 JavaScript 对象字面量的区别
- 在发起 API 请求前校验 JSON
- JSON 格式化器 vs JSON 修复工具
- 修复 JSON Unexpected Token 错误