跳到主要内容

即时转换:JavaScript To JSON — Numio

把 JavaScript 对象字面量转换为严格的 JSON,缩进 2 个空格。支持不带引号的键、单引号、注释、末尾逗号、十六进制数和以小数点开头的小数,并统一规范化。

把 .js 文件中的配置或测试数据对象复制到 JSON 文件、API 请求体或 Postman 集合中。

支持 JSON 和 JSON5,可使用注释、单引号和末尾逗号;不会执行函数或 JavaScript 表达式。

JS Object

JSON

适用场景

  • 把 .js 文件中的配置或测试数据对象复制到 JSON 文件、API 请求体或 Postman 集合中。
  • 清理从浏览器 DevTools 或文档中粘贴来的对象,使其能通过严格的 JSON 解析器。

使用方法

  1. 将对象字面量(只要数据,不含变量声明和末尾分号)粘贴到左侧编辑器,或用加载文件按钮打开 UTF-8 文件。
  2. 输入时右侧会实时显示 JSON;如果出现 "invalid character" 等错误,请检查提示的行号和列号。
  3. 检查转换后的值(十六进制变为十进制,引号变为双引号),然后复制结果。

JavaScript 对象字面量

{
  // Mongoose-style field definition
  title: {
    type: 'String',
    required: true,
  },
  year: { type: 'Number', max: 0x7E6 },
  tags: ['draft', 'review',],
  ratio: .75,
  'content-type': "text/plain",
}

JSON

{
  "title": {
    "type": "String",
    "required": true
  },
  "year": {
    "type": "Number",
    "max": 2022
  },
  "tags": [
    "draft",
    "review"
  ],
  "ratio": 0.75,
  "content-type": "text/plain"
}

功能与限制

输入在浏览器中由 JSON5 解析器解析,代码不会被执行。表达式、函数、new Date()、模板字符串、undefined 和变量引用都会被视为无效字符而拒绝。

NaN 和 Infinity 会报错,因为 JSON 无法表示它们。

注释和原有的键排版不会保留;输出始终使用双引号和 2 空格缩进。

超过 2^53 的整数会丢失精度(12345678901234567890 变为 12345678901234567000)。大的 ID 请写成字符串。

FAQ

可以粘贴 const config = { ... }; 吗?

不可以。只接受值本身。请删除声明和末尾分号,否则解析器会在该位置报告无效字符。

重复的键会怎样处理?

以最后一次出现的为准。{a: 1, a: 2} 会变成 {"a": 2},且不会有警告,手动合并的对象请注意检查。

根节点可以是数组或单个值吗?

可以。任何 JSON5 值都能转换,例如 [1, 2,] 变为两个元素的 JSON 数组,'hi' 变为 "hi"。

规范与参考资料