一个可直接在浏览器中运行的 JSON 工作台,集格式化、结构分析、差异对比、JSON Schema、TypeScript 和 Mock 数据生成于一体。
本地处理 · 无上传 · 无广告 · 无埋点 · 零运行时依赖
JSON Workbench 的设计目标是让敏感 JSON 不离开当前浏览器:
- 所有解析、格式化、对比和转换都在浏览器内存中完成。
- 源码不包含
fetch、XHR、WebSocket、统计 SDK、广告脚本或第三方 CDN。 - 不会把输入内容上传到服务器,也不会写入 Cookie 或
localStorage。 - 文件导入使用浏览器
FileReader,只读取用户主动选择的本地文件。 - 下载使用本地
BlobURL,复制优先使用浏览器剪贴板 API。 - 窗口备注只保存在当前标签页的
sessionStorage中;关闭标签页后由浏览器清理。 - JSON Schema 的
$ref仅解析当前文档内以#/开头的引用,不请求远程地址。 - 页面底部的 GitHub 仓库是唯一外部链接,只有用户主动点击后才会打开。
无需安装、注册或构建:
- 在线使用。
- 下载或克隆仓库,双击
index.html使用。
如果浏览器限制 file:// 页面的剪贴板能力,可使用任意静态文件服务器打开本目录;这不会改变应用的本地处理方式。
- 支持普通 JSON 与 JSON Schema转换。
- 格式化、压缩、递归 Key 排序、复制、下载和本地文件导入。
- 显示语法错误位置、连续行号、行数和 UTF-8 文件大小。
- 结构树与源码双向同步,支持新增、删除、重命名、类型切换和节点路径复制。
- 从 JSON 样本生成 JSON Schema、TypeScript 定义和确定性 Mock 数据。
- 从 JSON Schema 生成 TypeScript 与 Mock。
- 对象按 Key 无序比较,数组按索引有序比较。
- 识别新增、删除、值修改和类型变化,并使用标准 JSON Pointer 表示路径。
- 支持导入、格式化、压缩、复制和清空。
- 报告支持按差异类型筛选,并在两侧源码中同步显示行级高亮。
标签页窗口备注可帮助区分同时打开的多个工作台。
项目不需要安装 npm 依赖。package.json 只提供统一的维护命令:
npm test该命令使用 Node.js 自带的 --check 检查 src/、tests/ 和 scripts/ 中的全部 JavaScript。
DOM 与核心行为测试可直接打开 tests/index.html 运行;测试页同样不加载第三方框架。
.
├── index.html # 应用结构、SVG 图标精灵和脚本加载入口
├── assets/
│ ├── css/styles.css # 设计令牌、布局、组件状态和响应式样式
│ └── icons/favicon.svg # 本地站点与品牌图标
├── src/
│ ├── app.js # 应用初始化、视图切换、通知和窗口备注
│ ├── core/
│ │ ├── json-utils.js # JSON 解析、序列化、类型、大小和排序工具
│ │ ├── diff-engine.js # 无 DOM 的结构化差异算法
│ │ └── json-converter.js # Schema、TypeScript 与 Mock 转换算法
│ └── ui/
│ ├── file-actions.js # 本地导入、下载和剪贴板适配
│ ├── tree-editor.js # 可编辑结构树组件
│ ├── editor-panel.js # 共享源码输入与结构分析协调
│ ├── diff-panel.js # 双栏对比、高亮和报告交互
│ └── unified-converter-panel.js # 输入识别与五类转换结果协调
├── tests/
│ ├── index.html # 无框架浏览器测试入口
│ └── browser-tests.js # 核心算法和树编辑器断言
├── scripts/
│ ├── check-syntax.js # 零依赖 JavaScript 语法检查器
│ └── check-local-links.js # HTML 本地资源断链检查器
├── package.json # 项目元数据和维护命令
├── .gitignore # 依赖、缓存、密钥和本地工具排除规则
├── .gitattributes # 跨平台文本换行与二进制文件规则
├── LICENSE # MIT 许可证
└── README.md
- 仅接受标准 JSON,不支持注释、尾随逗号、
NaN、Infinity或undefined。 - 所有脚本使用 IIFE,并只挂载到
window.JsonWorkbench命名空间。 - 不使用 ES Module,确保经典脚本可按依赖顺序从
file://加载。 - 数组顺序始终保留;Key 排序只作用于对象。
- 生成结果是确定性的:同一输入会产生相同 Schema、TypeScript 和 Mock。
- 建议使用现代版本的 Chrome、Edge 或 Firefox。