JSONFlow · 工作台

Format, explore and convert JSON safely.

在浏览器里校验、浏览并转换 JSON:精确到行列的报错、面对超大文件依然流畅的可折叠树、JSONPath 查询,以及导出为 CSV、XML、YAML、JSON Schema 或 TypeScript。

100% 本地,什么都不上传每个错误都给出确切行列CSV、XML、YAML、Schema 与 TypeScript
原文
还没有载入任何内容。

在左侧粘贴或拖入 JSON 即可开始。

小于 256.0 KB 的文档边输入边构建;更大的会等你点“解析”。
继续处理

工作原理

1

把 JSON 拿进来

粘贴、拖入文件,或由另一个工具直接递过来。什么都不会上传,重活也不会在你开口之前启动。

2

看结论

要么有效,要么给出出错的确切行列,另外还有重复的键和 JavaScript 存不下的数字。

3

翻一翻

折叠树、按键或值筛选,或者对整份文档跑一条 JSONPath 表达式。

4

带走它

CSV、XML、YAML、JSON Lines、JSON Schema、TypeScript 或 Go 类型,也可以直接送去另一个工具。

真正的解析器,不是 JSON.parse

报错会给出行、列,并在行号栏高亮那一行,而不是丢给你一个还得自己数的字符偏移量。

64 位标识符不会走样

长数字标识符会逐位原样写回。任何基于 JSON.parse 的格式化工具都会悄悄把它们四舍五入到最近的双精度值。

一键修复

注释、多余逗号、单引号、未加引号的键、Python 的 True/False/None,以及跑错地方的 BOM,都会变成严格 JSON。

JSONPath 查询

通配符、递归下降、切片,以及 [?(@.price > 10)] 这类过滤条件,全部手写解释:你输入的内容永远不会被执行。

从真实数据得出类型

JSON Schema、TypeScript 接口或 Go 结构体,都会通读所有记录后推断,因此偶尔缺席的字段会成为可选项。

诚实的扁平化

你决定路径分隔符,以及嵌套数组的去向。空对象会保留自己的列,而不是从导出结果里消失。

结构化对比

两份文档逐条路径比较,键的顺序不同不会被算成上千处改动。

大文件依然好用

校验搬进 Web Worker,树只挂载屏幕上看得见的行,撤销记录保存改动的字符而不是整份文档的副本。

JSON 格式化

Format, explore and convert JSON safely.

API 响应里带着令牌、客户资料和内部标识符。JSONFlow 不会把这些送到任何地方:解析器、树、查询和导出都在这个标签页内运行,所以把生产环境的响应粘进来,和在自己的编辑器里打开一样私密。

一切都在这个标签页里运行

解析器、可折叠树、JSONPath 引擎和每一种导出,都是在你设备上运行的普通 JavaScript。没有上传步骤,没有后端,也没有任何带着你数据的请求:页面加载完之后断网,工具照样能用。

面向开发者的完整 JSON 工作台。

大家拿它做什么

找出那一个把配置文件搞坏的逗号,把 API 响应变成表格,为没人写过文档的接口生成 TypeScript 接口,确认同一份数据的两个版本是否真有差别,以及打开那些 JSON 被包在带引号字符串里的日志。

为什么本地在这里格外重要

JSON 数据几乎从不是匿名的:里面有访问令牌、邮箱地址、订单号和内部接口地址。把它粘进托管在别处的格式化网站,等于把这一切交给别人的服务器。在这里它不会离开标签页,也就没有什么可记录、可缓存或可泄露的。

常见问题

Q我的 JSON 会被发送到服务器吗?+

不会。解析、校验、树、查询和所有导出都在这个浏览器标签页内运行。页面加载完之后你可以断开网络,一切照常工作。

Q它实际能处理多大的文件?+

在一台普通笔记本上,一份 1.5 MB、包含 18 万个节点的文档解析耗时远低于十分之一秒,几十兆字节的文件也仍然打得开:校验搬进了 Web Worker,树只绘制屏幕上看得见的行。真正的上限是内存而不是工具:超过大约 100 MB 之后,用任何程序浏览器标签页都会吃力。凡是超过 2 MB 的文件都会拦在一个按钮后面而不是自动加载,所以大文件永远不会在送进来的瞬间把页面卡住。

Q为什么我的长标识符在别的工具里会变?+

JSON.parse 会把每个数字变成 64 位浮点数,而它无法精确表示大于 2^53 的整数——Twitter、Discord 或 Snowflake 的标识符会丢掉最后几位。JSONFlow 保留原文中的数字,并在数值进入这个区间时给出提醒。

Q我的文件里有注释和多余逗号,会有问题吗?+

不会。严格解析失败时会自动再跑一遍宽容解析,若能成功就会出现“修复”按钮。它能处理注释、多余逗号、单引号、未加引号的键、Python 的 True/False/None、NaN 和 Infinity,并把文档改写成严格 JSON。

QJSON 转 CSV 的扁平化是怎么做的?+

最外层数组的每个元素变成一行,嵌套的键变成 user.address.city 这样带点的列名。分隔符由你选择,嵌套数组可以每项一列、保持 JSON 原样或拼接起来。反过来时表头按字面处理:除非你明确要求还原嵌套,first_name 这一列就一直是 first_name。

Q查询栏里可以写什么?+

JSONPath 的一个子集:$.users[0].name、用 [*] 的通配符、用 .. 的递归下降、[0:5] 这样的切片、负数下标,以及 [?(@.price > 10)] 或 [?(@.name =~ ^a)] 这类过滤条件。表达式由程序自己解释,绝不会当作代码执行。

关键词

JSON 格式化JSON 校验JSON 查看器JSON 转 CSVJSON 转 XMLJSON 转 YAMLCSV 转 JSONJSON 美化JSONPathJSON Schema 生成器JSON 转 TypeScriptJSON 对比JSON 修复JSON Lines
oLoveTools 工具集的一部分
oLoveTools

为设计师和开发者打造的快速、精致且私密的工具。

© 2026 oLoveTools关于

下一步

将 JSON 转换为 XML XML to JSON

JSONFlow | JSON 格式化、校验、查看与转换工具

格式化、校验并浏览 JSON,报错精确到行列,面对大文件的树依然流畅。可转换为 CSV、XML、YAML 或 JSON Lines,生成 JSON Schema 与 TypeScript 类型,并运行 JSONPath 查询——全部在浏览器里完成。

常见问题

我的 JSON 会被发送到服务器吗?

不会。解析、校验、树、查询和所有导出都在这个浏览器标签页内运行。页面加载完之后你可以断开网络,一切照常工作。

它实际能处理多大的文件?

在一台普通笔记本上,一份 1.5 MB、包含 18 万个节点的文档解析耗时远低于十分之一秒,几十兆字节的文件也仍然打得开:校验搬进了 Web Worker,树只绘制屏幕上看得见的行。真正的上限是内存而不是工具:超过大约 100 MB 之后,用任何程序浏览器标签页都会吃力。凡是超过 2 MB 的文件都会拦在一个按钮后面而不是自动加载,所以大文件永远不会在送进来的瞬间把页面卡住。

为什么我的长标识符在别的工具里会变?

JSON.parse 会把每个数字变成 64 位浮点数,而它无法精确表示大于 2^53 的整数——Twitter、Discord 或 Snowflake 的标识符会丢掉最后几位。JSONFlow 保留原文中的数字,并在数值进入这个区间时给出提醒。

我的文件里有注释和多余逗号,会有问题吗?

不会。严格解析失败时会自动再跑一遍宽容解析,若能成功就会出现“修复”按钮。它能处理注释、多余逗号、单引号、未加引号的键、Python 的 True/False/None、NaN 和 Infinity,并把文档改写成严格 JSON。

JSON 转 CSV 的扁平化是怎么做的?

最外层数组的每个元素变成一行,嵌套的键变成 user.address.city 这样带点的列名。分隔符由你选择,嵌套数组可以每项一列、保持 JSON 原样或拼接起来。反过来时表头按字面处理:除非你明确要求还原嵌套,first_name 这一列就一直是 first_name。

查询栏里可以写什么?

JSONPath 的一个子集:$.users[0].name、用 [*] 的通配符、用 .. 的递归下降、[0:5] 这样的切片、负数下标,以及 [?(@.price > 10)] 或 [?(@.name =~ ^a)] 这类过滤条件。表达式由程序自己解释,绝不会当作代码执行。

关键词

JSON 格式化, JSON 校验, JSON 查看器, JSON 转 CSV, JSON 转 XML, JSON 转 YAML, CSV 转 JSON, JSON 美化, JSONPath, JSON Schema 生成器, JSON 转 TypeScript, JSON 对比, JSON 修复, JSON Lines