JSON 工作台:格式化、校验与结构对比放在同一个页面

从反复在终端写临时命令洗 JSON 的经历出发,做一个只在浏览器里运行的工作台:格式化、压缩、排序、带行列的错误定位,以及两份 JSON 的结构差异。

起因

我处理 JSON 的频率比想象中高:接口返回、配置文件、日志片段。每次都在终端里敲一句临时命令,用完就丢。问题有三个:长文档里看不清结构;出错位置只能靠猜;两份 JSON 的差别只能肉眼比。

于是有了这个工具页,它要解决的就是这三件事。

四个动作

格式化与压缩是最基本的两个方向。排序按 key 递归进行,作用不是好看,而是让「比较之前先归一化」这一步有个按钮——不排序,两份结构相同、键序不同的 JSON 会被判成完全不同。

校验这一项我做得比预期细。只回答「格式正确 / 不正确」没什么用,JSON.parse 抛出的消息在几千行文档里几乎定位不到问题。所以解析失败时会把错误位置换算成行列,直接指到那一段。

对比模式为什么要懒加载

结构对比不是每个人每次都要用的功能,而它的代码量不小。所以对比逻辑走运行时 import():只有点开对比模式,对应的 chunk 才开始下载。这是这个站三层异步加载里的第三层——路由级切分、水合级延迟、运行时按需。

代价是第一次点开对比会有一瞬等待,需要加载态兜住。对这个场景来说这个交换是划算的。

全部在本地运行

没有后端,所有解析都发生在浏览器里。对工具页来说这不是加分项而是底线:没人愿意把配置里的密钥、令牌或内部地址贴到一个陌生服务器上。

我学到的

工具的第一版总是功能齐全但顺序不对。最后定下来的顺序是「先看结构、再看错误、最后才对比」,因为这就是我自己用它的顺序。功能清单好写,顺序得靠真用过才知道。

← 返回文章列表

评论

…