JSON 转 Markdown
免费在线 JSON 转 Markdown 工具,把 JSON 数组或嵌套对象一键转成可直接用于 GitHub README、技术文档、博客的 GFM Markdown 表格代码。支持 4 种嵌套处理模式(拍平/首层键/字符串化/Raw JSON)、拍平深度 1-6 层可调、自定义分隔符、键名美化(user_name → User Name)、列排序、多表智能拆分(自动识别顶层数组)、null 智能占位、左右居中对齐、9 项选项实时预览,完全本地浏览器运行。
相关推荐
关于 JSON 转 Markdown 与 Markdown 表格
JSON 转 Markdown 工具(JSON to Markdown Converter)是一种把 JSON 数据结构自动转换为标准 GFM(GitHub Flavored Markdown)表格代码的实用工具。它把开发者从手写 `|` / `-` 表格分隔符的重复劳动中解放出来,特别适合需要把 API 返回的嵌套数据、配置文件或任何 JSON 结构快速展示为技术文档、README、博客的场景。
Markdown 表格是 John Gruber 2004 年在 Markdown 语法中提出的纯文本表格表示法,由 `|` 分隔单元格、`-` 定义表头分隔行、可选的 `:` 控制对齐。GFM(GitHub Flavored Markdown)在标准 Markdown 基础上扩展了表格语法,被 GitHub、GitLab、Bitbucket、Notion、Confluence、Slack、Discord、VS Code 等绝大多数现代平台原生支持。本工具生成的代码严格遵循 GFM 规范。
市面上的 JSON 转 Markdown 工具分三类:第一类仅生成 Markdown 代码字符串(如 jsonformatter.org、convertcsv.com),强调「复制即用」;第二类同时提供高级配置(深度拍平 / 键名美化 / 多表拆分),代表是本工具;第三类支持 Markdown 反向解析(Markdown 转 JSON),与本工具互为逆操作。
本工具的「嵌套拍平 + 键名美化」是相对大多数竞品的差异化亮点:传统工具遇到 `{user:{name:'Alice'}}` 会直接显示成 `{"name":"Alice"}` 字符串,而本工具会递归展开为 `user.name` 列(最多 6 层深度,分隔符可配置),并把 `user_name` / `userProfileId` 自动转为 `User Name` / `User Profile Id` 风格的标题,让表头更适合人类阅读。这意味着你可以直接处理 GitHub API、Stripe API、Notion API 等嵌套结构复杂的真实业务数据,无需预先用 jq / lodash 拍平。
另一个差异化亮点是「智能多表格拆分」:当 JSON 顶层有多个数组字段时(如 `{users:[...], orders:[...], products:[...]}`),工具会自动识别并把每个数组拆为独立的 Markdown 表格,每个表上方自动生成 `### 字段名` 标题(H3),让长文档结构清晰可导航。
Markdown 表格与 HTML 表格相比,最大的优势是「纯文本可版本控制」:`.md` 文件用 git diff 可以清晰看到表格行的增减,而 HTML 表格的 `<tr>` `<td>` 在 diff 工具中通常显示为长行难以阅读。这也是为什么 GitHub、GitLab 等代码托管平台都把 Markdown 表格作为默认的数据展示方式。
适用场景
- 编写技术文档时把 API 返回的 JSON 数据转成 Markdown 表格展示
- GitHub README 需要展示配置数据、参数说明、API 响应示例
- 数据报告需要用 Markdown 表格呈现分析结果(支持导出后嵌入 Notion / Confluence)
- API 文档(Swagger / Redoc / OpenAPI)需要清晰展示接口返回的数据结构
- VuePress / Docusaurus / Hexo 等静态站点生成器的文档章节
- Slack / Discord / 企业 IM 中分享结构化数据(GFM 在这些平台被原生支持)
- VS Code / JetBrains IDE 的 Markdown Preview 即时预览表格效果
- 版本控制协作:Markdown 表格是纯文本,git diff 友好,便于 Code Review
- 教学场景:数据结构课程中把学生提交的嵌套 JSON 作业转表格统一批改展示
- 邮件模板(支持 Markdown 的邮件客户端如 Bear Mail、HEY)
- Notion 数据库导入:先用本工具生成 Markdown 表格,再粘贴到 Notion 即可
- 国际化场景:JSON 拍平 + 键名美化后,中英文文档共享同一份结构
使用方法
- 在左侧编辑器粘贴 JSON 数组(推荐)或嵌套对象,或点击「Sample」加载 3 条嵌套用户示例,或点击「Upload」上传 .json / .txt 文件
- 在工具栏选择嵌套处理模式(推荐「Flatten(拍平)」),如果 JSON 有多层嵌套可调高 Max Depth
- 如需自定义分隔符,在 Separator 输入框填写(默认 `.`,可改为 `_` / `-` / `/`)
- 选择 Strategy:单数组选「Single」;多数组字段选「Multi」自动拆分;强制拆分选「Split」
- 勾选样式选项:Sort columns(列排序)、Beautify keys(键名美化)、Exclude empty(排除空列)、Include Caption(标题)、Include Index(行索引)
- 选择对齐方式:左对齐 / 居中对齐 / 右对齐
- 点击「Convert」按钮(或直接敲回车)触发转换;输入时会有 500ms 防抖保护
- 右侧查看生成的 Markdown 表格代码,满意后点击「Copy」复制代码粘贴到 Markdown 文档,或点击「Download」下载为 table.md 文件
功能特点
- 嵌套对象自动拍平:递归展开 `{user:{name,age}}` 为 `user.name`、`user.age` 等点号键名(深度 1-6 层可调),无需手写拍平脚本
- 4 种嵌套处理模式:拍平(推荐,深度可调)/ 首层键(嵌套对象作为单列 JSON)/ 字符串化(嵌套对象转 JSON 字符串)/ Raw JSON(每行一个完整 JSON 块)
- 智能多表格拆分:识别 JSON 顶层数组字段(如 `users`、`orders`),自动拆为多个独立 Markdown 表格并生成 ### 标题,适合复杂业务数据
- 自定义分隔符:拍平模式默认 `.`(如 `user.name`,符合 Lodash / MongoDB 约定),可在工具栏输入 `_` / `-` / `/` 等自定义
- 键名美化(camelCase / snake_case → Title Case):`user_name` 自动转为 `User Name`,`userProfileId` 自动转为 `User Profile Id`,让表头更适合人类阅读
- 列排序开关:一键按字母顺序排列所有表头列,对比多份 Markdown 文档时让列顺序稳定一致
- 空值列排除:自动检测所有行都为 null / undefined / 空字符串的列并排除,避免无意义列占空间
- 3 种对齐方式:左对齐(`:-`)/ 居中对齐(`:-:`)/ 右对齐(`-:`),单选按钮切换,符合 GFM 规范
- 行索引列开关:可选在最左侧添加 `#` 编号列(表头文本可自定义),方便在文档中引用行号
- Caption 标题开关:每个表格上方自动生成 `### 数据名` 三级标题(H3),分章节文档中结构清晰,对 SEO 有帮助
- 类型感知转义:单元格内的 `|` / `\` / 换行符自动转义为 `\|` / `\\` / `<br>`,避免破坏 Markdown 表格语法
- 生成统计反馈:底部状态栏实时显示「已生成 N 个表格 × M 行 × K 列」+ 字节数,调试长 JSON 时一眼看清数据规模
- 示例数据 + 文件上传:内置 3 条嵌套用户示例一键加载,支持拖拽或点击上传 .json / .txt 文件
- 完全浏览器本地运行:所有 JSON 解析、嵌套拍平、Markdown 生成、复制下载操作在你的浏览器内完成,数据不上传任何服务器
代码示例
JavaScript:fetch + 嵌套拍平 + Markdown 输出
javascript实际开发中最常见的用法:调用 GitHub API 后嵌套对象拍平为点号键名,再用本工具生成 Markdown 表格。
// 1) 调用 GitHub API 获取用户列表
async function fetchUsers() {
const res = await fetch('https://api.github.com/users?per_page=10');
return await res.json();
}
// 2) 嵌套拍平函数(与本工具的拍平逻辑等价)
function flattenObject(obj, prefix = '', sep = '.', result = {}, depth = 0, maxDepth = 3) {
if (!obj || typeof obj !== 'object' || Array.isArray(obj)) return result;
if (depth >= maxDepth) {
if (prefix) result[prefix] = JSON.stringify(obj);
return result;
}
for (const [k, v] of Object.entries(obj)) {
const key = prefix ? `${prefix}${sep}${k}` : k;
if (v && typeof v === 'object' && !Array.isArray(v)) {
flattenObject(v, key, sep, result, depth + 1, maxDepth);
} else {
result[key] = v;
}
}
return result;
}
// 3) 把拍平后的数据转 Markdown 表格
function generateMarkdownTable(rows, opts = {}) {
const { align = 'left', includeIndex = false, sortColumns = false } = opts;
const flat = rows.map(r => flattenObject(r));
let cols = [...new Set(flat.flatMap(r => Object.keys(r)))];
if (sortColumns) cols.sort((a, b) => a.localeCompare(b));
const alignMap = { left: ':-', center: ':-:', right: '-:' };
const alignSep = alignMap[align];
const headers = includeIndex ? ['#', ...cols] : cols;
const seps = includeIndex ? [alignSep, ...cols.map(() => alignSep)] : cols.map(() => alignSep);
const escapeCell = v =>
v == null ? '' :
typeof v === 'object' ? JSON.stringify(v).slice(0, 60) :
String(v).replace(/\\|/g, '\\|').replace(/\n/g, '<br>');
const lines = [];
lines.push('| ' + headers.join(' | ') + ' |');
lines.push('| ' + seps.join(' | ') + ' |');
flat.forEach((r, i) => {
const idxCell = includeIndex ? [i + 1] : [];
const cells = cols.map(c => escapeCell(r[c]));
lines.push('| ' + [...idxCell, ...cells].join(' | ') + ' |');
});
return lines.join('\n');
}
// 4) 输出到 README.md
const users = await fetchUsers();
const md = generateMarkdownTable(users, { align: 'left', sortColumns: true });
console.log('## GitHub Users\n\n' + md);
// 复制粘贴到 README.md 即被 GitHub 渲染为表格Python:Flask 后端生成 Markdown 报表
python后端聚合多源数据后用 Python 生成 Markdown 表格(无前端依赖),适合 CI/CD 自动生成周报。
from flask import Flask, jsonify
import json
app = Flask(__name__)
def flatten(obj, prefix='', sep='.', result=None, depth=0, max_depth=3):
"""递归拍平嵌套对象"""
if result is None:
result = {}
if not isinstance(obj, dict) or depth >= max_depth:
if prefix:
result[prefix] = json.dumps(obj) if isinstance(obj, (dict, list)) else obj
return result
for k, v in obj.items():
key = f"{prefix}{sep}{k}" if prefix else k
if isinstance(v, dict):
flatten(v, key, sep, result, depth + 1, max_depth)
else:
result[key] = v
return result
def json_to_markdown_table(data, align='left', include_index=False,
sort_columns=False, caption=None):
if isinstance(data, dict):
data = [data]
if not data:
return "<!-- No valid objects found -->"
flat_rows = [flatten(row) for row in data]
columns = []
for row in flat_rows:
for k in row:
if k not in columns:
columns.append(k)
if sort_columns:
columns.sort()
align_sep = {'left': ':-', 'center': ':-:', 'right': '-:'}[align]
headers = (['#'] if include_index else []) + columns
seps = ([align_sep] if include_index else []) + [align_sep] * len(columns)
def escape_cell(v):
if v is None:
return ''
if isinstance(v, (dict, list)):
s = json.dumps(v)
return s[:60] + '…' if len(s) > 60 else s
return str(v).replace('|', '\\|').replace('\n', '<br>')
lines = []
if caption:
lines.append(f'### {caption}\n')
lines.append('| ' + ' | '.join(headers) + ' |')
lines.append('| ' + ' | '.join(seps) + ' |')
for i, row in enumerate(flat_rows):
idx_cell = [str(i + 1)] if include_index else []
cells = [escape_cell(row.get(c, '')) for c in columns]
lines.append('| ' + ' | '.join(idx_cell + cells) + ' |')
return '\n'.join(lines)
@app.route('/api/stats.md')
def stats_markdown():
"""把内部 API 数据生成 Markdown 表格"""
data = json.load(open('weekly_stats.json'))
md = json_to_markdown_table(data['users'], align='left', sort_columns=True, caption='周活跃用户')
return md, 200, {'Content-Type': 'text/markdown; charset=utf-8'}
if __name__ == '__main__':
app.run(debug=True)命令行:jq 聚合 + 本工具生成 GitHub Release Notes
bash运维场景:从 GitHub API 拉取 PR 列表,用 jq 聚合并拍平为点号键名,再粘贴到本工具生成 GFM Release Notes。
# 1) 用 gh CLI 拉取最近 50 个 merged PR
PR_JSON=$(gh pr list --state merged --limit 50 --json number,title,author,labels,mergedAt)
# 2) 用 jq 拍平 labels 嵌套数组(与本工具拍平逻辑等价)
echo "$PR_JSON" | jq 'map({
number: .number,
title: .title,
author: .author.login,
labels: (.labels | map(.name) | join(", ")),
mergedAt: .mergedAt
})' > release_prs.json
# 3) 打开本工具 (https://geekformat.com/json/to-markdown/)
# - 粘贴 release_prs.json 内容
# - 工具栏 Strategy 选 "Single"
# - 勾选 Sort columns + Include Index
# - 点击 Convert
# - 复制生成的 Markdown 表格
# 4) 拼接到 Release Notes
cat > RELEASE.md <<'EOF'
# v2.1.0 Release Notes
## 🆕 What's Changed
EOF
# 把上一步复制的表格粘贴到这里(或用 sed 注入)
sed -i '/## 🆕/r /tmp/table.md' RELEASE.md
cat >> RELEASE.md <<'EOF'
**Full Changelog**: https://github.com/your/repo/compare/v2.0.0...v2.1.0
EOF
# 5) 用 gh CLI 创建 Release
gh release create v2.1.0 -F RELEASE.md -t "v2.1.0"常见问题
怎么把 JSON 数据转成 Markdown 表格?
把 JSON 数组(每个元素是一个对象)或单个对象粘贴到左侧输入框,点击工具栏「Convert」按钮,右侧会自动生成 GFM 标准的 Markdown 表格代码。生成的代码可直接粘贴到 GitHub README、Markdown 博客、Confluence 页面、Notion 文档中。
嵌套的 JSON 对象能转成 Markdown 表格吗?
可以。本工具内置 4 种嵌套处理模式应对不同场景:① 拍平(推荐):递归把 `{user:{name:'Alice',age:30}}` 展开成 `user.name`、`user.age` 两列,深度 1-6 层可调;② 首层键:只取顶层字段,嵌套对象作为整列 JSON 字符串;③ 字符串化:嵌套对象统一转 JSON 字符串;④ Raw JSON:每行一个完整 JSON 块(适合代码片段展示)。
拍平后的键名分隔符能改吗?
默认使用 `.` 作为分隔符(`user.name`),符合 JavaScript / MongoDB / Lodash 等主流约定。如需 `user_name`(snake_case)或 `user/name`(路径风格),可在工具栏的「Separator」输入框自定义(最多 3 个字符)。
键名美化是什么意思?
勾选「Beautify keys」后,`user_name`、`userProfileId` 这类键名会自动转为 `User Name`、`User Profile Id` 这种 Title Case。底层实现是把下划线 / 短横线转为空格,再在 camelCase 大写字母前加空格,最后首字母大写。这样表头更适合人类阅读,对 README、API 文档等长篇 Markdown 特别有用。
如何拆分多个表格?
工具栏的「Strategy」下拉有三个选项:① Single(默认):整个 JSON 合成一个表(适合纯数组场景);② Multi:当 JSON 是包含多个数组字段的对象时,自动把每个数组拆为独立表并生成 ### 标题(适合 `{users:[...], orders:[...]}` 场景);③ Split:强制拆分模式,仅处理数组字段,其他字段忽略。
生成的 Markdown 表格可以直接用于 GitHub 吗?
可以。工具生成的 Markdown 表格符合 CommonMark 和 GFM(GitHub Flavored Markdown)规范,可直接用于 GitHub README、GitLab 文档、Notion 页面、VuePress / Docusaurus / Hexo 博客、Slack / Discord 消息、VS Code Markdown Preview 等任何支持 GFM 的平台。
支持批量生成多个 Markdown 表格吗?
支持。把 Strategy 切换为「Multi」或「Split」,工具会智能识别 JSON 顶层数组字段(如 `users` / `products` / `orders`),每个数组自动生成一个独立的 Markdown 表格,并在每个表格上方生成 `### 字段名` 标题,方便在长文档中组织展示。
怎么控制表头顺序?
工具默认按 JSON 中各对象 key 首次出现的顺序作为表头顺序。如果你希望按字母顺序排列所有列(对比多份文档时让列稳定一致),勾选工具栏的「Sort columns」开关;如需完全自定义顺序,可使用「Column order」高级功能(即将推出)。
空值列太多了怎么办?
勾选工具栏的「Exclude empty」开关,工具会自动检测所有行都为 null / undefined / 空字符串的列并排除。这对稀疏数据(如只有部分用户填了某字段)特别有用,可大幅减少表格宽度。
单元格里的 | 字符会被破坏表格吗?
不会。工具自动转义单元格中的 `|`(变为 `\|`)、`\`(变为 `\\`)、换行(变为 `<br>`),确保生成的 Markdown 表格在所有渲染器中都不会出现错位。这是相对竞品的关键升级——大多数竞品不做转义,会导致用户复制含 `|` 的数据后表格崩掉。
Markdown 表格和 HTML 表格有什么区别?
Markdown 表格是纯文本格式(`|` `-` 语法),适合技术文档、README、博客、版本控制协作,语法简洁易读;HTML 表格是带样式的网页格式(`<table>` `<tr>` 标签),适合需要嵌入 CSS 样式、响应式布局、可访问性 ARIA 标签的前端页面。两者都从 JSON 转换而来,但应用场景不同,建议用本工具生成 Markdown 表格嵌入技术文档,用 JSON 转 HTML 工具生成 HTML 表格嵌入网页。
Markdown 表格的最大行数限制?
工具默认不设行数上限(与 HTML 表格工具不同),因为 Markdown 表格是纯文本,浏览器渲染压力小。但建议:① 超过 1000 行时拆分为多表或分页;② 嵌入 GitHub README 时单文件不超过 1MB;③ 嵌入 Notion / Confluence 时遵守平台限制。
怎么自定义 Caption 标题?
「Multi / Split」策略下,每个表格的 Caption 自动使用顶层数组字段名(如 `### users`、`### orders`)。「Single」策略下,可勾选「Include Caption」并输入自定义标题文本。Caption 是 `### H3` 三级标题,符合 Markdown 文档结构规范。
数据上传到服务器吗?隐私安全吗?
完全本地浏览器运行。所有 JSON 解析、嵌套拍平、Markdown 生成、复制下载操作都在你的浏览器内通过 JavaScript 完成,文件读取也只在本地 FileReader 中处理,不会发送到任何服务器。包含敏感 API 返回、未公开业务字段的 JSON 都可以放心使用,关闭页面即清除。
故障排查
提示「请输入 JSON 数据」或类似错误
左侧输入框为空或只有空白字符。确保已粘贴有效的 JSON 内容,或点击「Sample」加载示例数据,或点击「Upload」选择 .json / .txt 文件。
提示「Unexpected token ... in JSON at position N」
JSON 格式不合法。常见原因:① 末尾有多余逗号(如 [{},{},]);② 用了单引号而非双引号;③ JS 对象写法(如 {key: value})而非 JSON({"key": "value"})。可用 JSON 格式化工具先校验修复。
生成的表格只有表头没有数据行
JSON 数据是空数组 [] 或空对象 {}。本工具对空数组会返回「<!-- No valid objects found -->」注释。可在源 JSON 中至少添加一条对象数据。
拍平模式下列名太长(如 user.profile.address.city.country.code)
嵌套层级太深时建议:① 改用「First Key」模式(仅取顶层字段,嵌套对象作为整列 JSON);② 减小 Max Depth(从 6 改为 3-4);③ 修改源 JSON 结构,减少不必要的嵌套;④ 用工具栏的 Reset 按钮恢复默认拍平配置。
多表拆分模式没有生成多个表格
确认源 JSON 是对象结构(而非纯数组),且字段中至少有一个值是「元素为对象的数组」(如 `"users": [{...}, {...}]`)。如果顶层字段都是字符串 / 数字 / 嵌套对象本身,「Multi」策略会回退到「Single」单表模式。
键名美化后表头是空的
Beautify Keys 功能会把 snake_case 转为 Title Case,但不会改变原本就以大写 / 特殊字符开头的 key(如 `__proto__`、`constructor`)。这些是 JavaScript 保留字,建议在源 JSON 中先重命名再用工具。
生成的 Markdown 在 GitHub 渲染为空
极少见。常见原因:① 表格中存在未转义的 `|` 字符(虽然本工具会自动转义,但手动修改后可能破坏);② 单元格中含有 HTML 标签(GitHub 默认不渲染,工具已自动转 `\n` 为 `<br>`);③ 文件编码非 UTF-8。
下载的 table.md 在编辑器打开是空白的
下载的文件仅包含 Markdown 表格代码(以 `|` `-` 字符开头),没有完整的 Markdown 文档骨架(如 `# 标题` `## 章节`)。这是为了方便嵌入到现有 Markdown 文档而设计的片段代码。可手动在文件开头加上 `# 标题` 等标题,或直接粘贴到现有 .md 文件对应位置。
表头中文显示乱码
源 JSON 中的 key 含中文,确保源文件本身是 UTF-8 编码。如果是从 Excel 复制的 JSON,可能被转成 GBK,可先用编码转换工具转为 UTF-8 再粘贴。
想批量修改生成的表格(如替换公司 Logo / 改颜色)
生成后在右侧 Copy 出 Markdown 表格,用 sed / 自写脚本批量替换样式属性。Markdown 表格本身不支持颜色(不像 HTML),如需颜色可改用 JSON 转 HTML 工具(生成 `<table>` 并加 inline style)。
排除空列后表格反而变宽了
Exclude Empty 是排除「所有行都为 null/undefined/空字符串」的列。如果某列只有 1 行有值、其他行都为空,则不会被排除(这是正确行为)。如需排除稀疏列,可在源 JSON 中先清洗。
历史记录丢失了
历史记录存储在浏览器 localStorage 中,清除浏览器数据 / 切换到无痕模式 / 使用其他浏览器都会导致历史记录消失。本工具不会上传历史到任何服务器,因此无法跨设备同步。
术语表
- Markdown 表格
- 由 | 和 - 字符组成的纯文本表格,被 GFM(GitHub Flavored Markdown)规范定义。本工具生成的代码严格遵循这套语法,可直接被 GitHub / GitLab / Notion / Confluence 渲染。
- GFM
- GitHub Flavored Markdown 的缩写,GitHub 在标准 Markdown 之上扩展的方言,包括表格、删除线、任务列表、自动链接等。本工具生成的表格符合 GFM 规范。
- CommonMark
- Markdown 语法的标准化规范(2014 年发布)。GFM 表格语法在 CommonMark 之上做了扩展。本工具的输出可同时被严格 CommonMark 解析器和 GFM 解析器正确渲染。
- JSON 数组
- 方括号 [...] 包裹的对象集合。本工具把数组的每个对象作为表格一行;如果是空数组则不生成表格(显示提示)。
- JSON 对象
- 花括号 {} 包裹的键值对集合。本工具把对象的每个 key 作为表头,value 作为单元格;单个对象会被自动包装为单行表格。
- 嵌套拍平 (Flatten)
- 把嵌套对象递归展开为点号分隔的扁平键名,例如 {user:{name:'A'}} → 'user.name'。本工具支持 1-6 层深度自动拍平,分隔符可配置。
- 键名美化 (Beautify Keys)
- 把 snake_case 或 camelCase 键名转为 Title Case 的转换规则:user_name → User Name,userProfileId → User Profile Id。本工具的差异化能力之一。
- 智能多表拆分 (Multi-Table Split)
- 识别 JSON 顶层数组字段(如 users、orders),自动拆为多个独立 Markdown 表格。本工具的差异化能力之一,每个拆出的表自动生成 ### 标题。
- 对齐语法 (Alignment)
- GFM 表格的表头分隔行支持 : 字符控制对齐::- 左对齐,:-: 居中对齐,-: 右对齐。本工具提供三个按钮一键切换。
- 行索引列 (Index Column)
- 在表格最左侧添加的 # 编号列(从 1 开始递增),表头文本可自定义。本工具默认不开启,开启后方便在文档中引用行号。
- Caption
- Markdown 中的 H3 三级标题(###),本工具在每个生成的表格上方自动添加此标签(默认使用顶层数组字段名或用户自定义文本),对文档导航和 SEO 都有帮助。
- 列排序 (Sort Columns)
- 把表格所有列按字母顺序排列的开关。开启后,对比多份文档时列顺序稳定一致,diff 工具看到的变化更易识别。
- 空列排除 (Exclude Empty)
- 检测所有行中某列都为 null / undefined / 空字符串时自动排除该列。本工具默认关闭,开启后大幅减少稀疏数据的表格宽度。
- Markdown 转义 (Escape)
- 把 Markdown 表格中有特殊含义的字符(如 |、\、换行)转义为安全形式(\|、\\、<br>),避免破坏表格语法。本工具自动做这个转义,是相对竞品的关键升级。
- 本地历史记录 (localStorage)
- 浏览器提供的本地键值存储(容量约 5-10MB)。本工具用 localStorage 持久保存最近输入,刷新或误关页面后可快速恢复。
- 防抖 (Debounce)
- 前端性能优化技巧:把高频事件(如输入)的回调合并为最后一次触发后执行一次。本工具设置 500ms 防抖,避免大文件解析卡顿。
4 种嵌套对象处理模式对比表
工具栏提供 4 种模式应对不同的嵌套场景,建议根据 JSON 结构复杂度选择:
| 模式 | 处理行为 | 示例列名 | 适用场景 |
|---|---|---|---|
Flatten(拍平) | 递归展开嵌套对象为点号分隔的键名(深度 1-6 可调) | user.name / profile.role | GitHub / Stripe / Notion 等真实 API 嵌套结构;希望每个字段单独成列 |
First Key(首层键) | 只取对象第一层 key,嵌套对象 / 数组作为单列 JSON 字符串 | user / tags | 嵌套结构不固定或太深(>6 层);只关心顶层字段概览 |
Stringify(字符串化) | 所有 value 强制当字符串处理,嵌套对象直接 JSON.stringify 后转义 | \ | user (作为整段 JSON) | 调试场景:希望保留原始 JSON 结构供肉眼检查 |
Raw JSON | 把整行数据序列化到一个 value 列,单元格里是格式化的 JSON 块 | value (整段 JSON) | 代码片段展示、日志聚合、希望保持原始 JSON 形态 |
3 种表格生成策略对比表
工具栏的 Strategy 下拉控制如何处理包含多个数组字段的 JSON:
| 策略 | 适用输入 | 输出形式 | 何时使用 |
|---|---|---|---|
Single | JSON 数组 或 单个对象 | 1 个表格,无标题(H3) | 纯数组场景(最常见) |
Multi | 含多个数组字段的对象(如 {users:[...], orders:[...]}) | 每个数组 → 1 个表格 + ### 标题 | 多业务对象聚合(如前端 dashboard 数据) |
Split | 任意对象 | 强制拆出所有顶层数组字段,忽略非数组字段 | 明确只想看数组部分时 |
工具栏 14 项可配置选项速查表
工具栏全部 14 项可配置选项及其作用,方便快速选择组合:
| 选项 | 类型 | 作用 |
|---|---|---|
nestMode | select | 嵌套处理:Flatten / First Key / Stringify / Raw JSON |
maxDepth | select | 拍平模式的最大深度(1-6) |
separator | text | 拍平模式的键名分隔符(默认 .,最多 3 字符) |
strategy | select | 表格生成策略:Single / Multi / Split |
align | button | 对齐方式:左 / 居中 / 右 |
includeIndex | checkbox | 在最左侧添加 # 编号列 |
indexHeader | text | 索引列表头文本(默认 #) |
sortColumns | checkbox | 按字母顺序排列所有列 |
beautifyKeys | checkbox | 键名 snake/camelCase → Title Case |
excludeEmpty | checkbox | 排除所有行都为空的列 |
includeCaption | checkbox | 在每个表格上方添加 ### 标题 |
caption | text | 自定义 Caption 文本(Single 策略生效) |
indent | select | Raw JSON 模式的缩进(0/2/4) |
Markdown 单元格转义规则速查表
工具会自动转义单元格中可能破坏表格语义的特殊字符:
| 输入字符 | 输出形式 | 转义原因 |
|---|---|---|
| (竖线) | \| | Markdown 表格列分隔符 |
\ (反斜线) | \\ | Markdown 转义字符本身 |
\n (换行) | <br> | Markdown 表格单元格内不允许真实换行 |
\r (回车) | (删除) | Windows 换行符的残余部分 |
null / undefined | (空字符串) | 默认占位,可配 Exclude empty |
对象 (length > 60) | JSON 截断到 60 字符 + … | 避免单单元格过长撑破表格 |
Privacy & Security
本 JSON 转 Markdown 工具所有 JSON 解析、嵌套拍平、Markdown 生成、复制下载操作完全在你的浏览器本地通过 JavaScript 完成,输入的 JSON 数据和生成的 Markdown 代码都不会被上传到任何服务器,也不会被记录、缓存或存储到云端。包含未公开 API 返回、内部业务字段的敏感 JSON 都可以放心使用,关闭页面即清除全部数据。
Authoritative References
- JSON 压缩
- CSV 转 JSON
- JSON 转 CSV
- JSON Diff
- JSON Escape / Unescape
- JSON扁平化
- JSON 格式化
- JSON 生成器
- JSONPath 查询
- JSON 合并
- JSON 修复
- JSON Schema 校验
- JSON 排序
- JSON Stringify
- JSON 转 HTML
- JSON 转 Java
- JSON 转 Markdown
- JSON 转 SQL
- JSON 转 TOML
- JSON 转 TypeScript
- XML 转 JSON
- JSON 转 XML
- YAML 转 JSON
- JSON 转 YAML
- JSON 转 Python
- JSON 转 Go
- JSON 转 Rust
- JSON 转 Swift
- JSON 转 C#
- JSON 转 C++
- JSON 转 PHP