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 拍平 + 键名美化后,中英文文档共享同一份结构

使用方法

  1. 在左侧编辑器粘贴 JSON 数组(推荐)或嵌套对象,或点击「Sample」加载 3 条嵌套用户示例,或点击「Upload」上传 .json / .txt 文件
  2. 在工具栏选择嵌套处理模式(推荐「Flatten(拍平)」),如果 JSON 有多层嵌套可调高 Max Depth
  3. 如需自定义分隔符,在 Separator 输入框填写(默认 `.`,可改为 `_` / `-` / `/`)
  4. 选择 Strategy:单数组选「Single」;多数组字段选「Multi」自动拆分;强制拆分选「Split」
  5. 勾选样式选项:Sort columns(列排序)、Beautify keys(键名美化)、Exclude empty(排除空列)、Include Caption(标题)、Include Index(行索引)
  6. 选择对齐方式:左对齐 / 居中对齐 / 右对齐
  7. 点击「Convert」按钮(或直接敲回车)触发转换;输入时会有 500ms 防抖保护
  8. 右侧查看生成的 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.roleGitHub / 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:

策略适用输入输出形式何时使用
SingleJSON 数组 或 单个对象1 个表格,无标题(H3)纯数组场景(最常见)
Multi含多个数组字段的对象(如 {users:[...], orders:[...]})每个数组 → 1 个表格 + ### 标题多业务对象聚合(如前端 dashboard 数据)
Split任意对象强制拆出所有顶层数组字段,忽略非数组字段明确只想看数组部分时

工具栏 14 项可配置选项速查表

工具栏全部 14 项可配置选项及其作用,方便快速选择组合:

选项类型作用
nestModeselect嵌套处理:Flatten / First Key / Stringify / Raw JSON
maxDepthselect拍平模式的最大深度(1-6)
separatortext拍平模式的键名分隔符(默认 .,最多 3 字符)
strategyselect表格生成策略:Single / Multi / Split
alignbutton对齐方式:左 / 居中 / 右
includeIndexcheckbox在最左侧添加 # 编号列
indexHeadertext索引列表头文本(默认 #)
sortColumnscheckbox按字母顺序排列所有列
beautifyKeyscheckbox键名 snake/camelCase → Title Case
excludeEmptycheckbox排除所有行都为空的列
includeCaptioncheckbox在每个表格上方添加 ### 标题
captiontext自定义 Caption 文本(Single 策略生效)
indentselectRaw 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