JSON 和 JavaScript 对象有什么区别?
JSON 是基于 JavaScript 对象写法的数据格式,但规则更严格。键名和字符串必须用双引号,值只能是字符串、数字、true、false、null、对象和数组。不能写 undefined、NaN、函数或日期。
为什么不能用注释和末尾逗号?
JSON 用于在程序之间交换数据,为了让各种语言都能同样读取,语法尽量保持精简。需要写注释的配置文件通常使用 JSONC 或 JSON5。使用“自动修复常见错误”可以去掉注释和末尾逗号。
大数字(超过 2^53 的整数)会怎样?
JavaScript 的数字无法精确表示超过 2^53 − 1(9007199254740991)的整数,用 JSON.parse 读取时 9007199254740993 会变成 9007199254740992。本工具不使用 JSON.parse,会按原样保留位数,并对会被改动的数字给出提示。像 9007199254740994 这样超出上限但恰好能精确表示的数,计算时仍可能出现误差,也会给出较轻的提示。在程序中处理时,建议改用字符串或 BigInt。
错误的行号和列号是怎么算的?
都从 1 开始数。列按字符(码位)数计算:汉字算 1 个,但组合表情(如家庭表情、国旗)可能算作多个,因此可能与 VS Code 等编辑器显示的列号不同。由于各浏览器 JSON.parse 的错误信息不同,本工具自行检查语法,并指出错误开始的位置。
重复的键有问题吗?
JSON 标准并未禁止,但大多数程序只保留后面的值,前面的值会被悄悄丢掉。这通常不是有意为之,所以本工具会给出提示(输出中两个都保留)。
输入的 JSON 会被上传吗?
不会。校验、格式化和树形视图都在你的浏览器中完成,文件也不会上传。内部的 API 返回和配置文件都可以放心粘贴。