JSON から Markdown

無料オンライン JSON から Markdown 変換ツール。JSON配列やネストオブジェクトをワンクリックで GitHub README、技術ドキュメント、ブログで使える GFM Markdown テーブルコードに変換。4種のネスト処理モード(フラット化/第1層キー/文字列化/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 変換ツールは3つのカテゴリに分けられます:第一類は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の課題をテーブルに変換して統一表示・採点
  • メールテンプレート(Bear Mail、HEYなどMarkdown対応メールクライアント)
  • 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」ボタンをクリック(または直接Enterキー)で変換を実行;入力時は500msのデバウンス保護あり
  8. 右側で生成されたMarkdownテーブルコードを確認し、満足したら「Copy」をクリックしてコードをコピーしMarkdownドキュメントに貼り付けるか、「Download」をクリックして table.md ファイルとしてダウンロード

特徴

  • ネストオブジェクト自動フラット化:`{user:{name,age}}` を `user.name`、`user.age` のようなドット記法キー名に再帰展開(深度1〜6段階調整可能)、手書きフラット化スクリプト不要
  • 4種のネスト処理モード:フラット化(推奨、深度調整可能)/ 第1層キー(ネストオブジェクトを単一列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 見出しスイッチ:各テーブルの上に `### データ名` 3段階見出し(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(... [truncated]

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.appe... [truncated]

コマンドライン: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` の2列に展開、深度1〜6段階調整可能;② 第1層キー:トップレベルフィールドのみ取得、ネストオブジェクトは列全体の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」ドロップダウンには3つのオプションがあります:① Single(デフォルト):JSON全体を1つのテーブルに統合(純粋な配列シナリオに最適);② 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内の各オブジェクトのキーが最初に出現する順序をヘッダー順序とします。すべての列をアルファベット順に並べたい場合(複数ドキュメント比較時に列を安定させる場合)、ツールバーの「Sort columns」スイッチをチェックしてください。完全なカスタム順序が必要な場合は、「Column order」高度な機能(近日提供予定)をご利用ください。

空値列が多すぎる場合はどうすれば?

ツールバーの「Exclude empty」スイッチをチェックすると、ツールが自動的に全行が null / undefined / 空文字列の列を検出して除外します。これはスパースデータ(一部のユーザーのみが特定のフィールドに入力している場合)に特に有用で、テーブル幅を大幅に削減できます。

セル内の | 文字がテーブルを破壊しませんか?

破壊しません。ツールはセル内の `|`(`\|` に)、`\`(`\\` に)、改行(`<br>` に)を自動的にエスケープし、生成されたMarkdownテーブルがすべてのレンダラーでずれないことを保証します。これは競合ツールに対する重要なアップグレードです——ほとんどの競合ツールはエスケープを行わず、`|` を含むデータをコピーした後にテーブルが崩壊します。

MarkdownテーブルとHTMLテーブルの違いは?

Markdownテーブルは純粋なテキスト形式(`|` `-` 構文)で、技術ドキュメント、README、ブログ、バージョン管理コラボレーションに適し、構文が簡潔で読みやすいです;HTMLテーブルはスタイル付きのWebページ形式(`<table>` `<tr>` タグ)で、CSSスタイルの埋め込み、レスポンシブレイアウト、アクセシビリティARIAラベルが必要なフロントエンドページに適しています。両方ともJSONから変換されますが、適用シーンが異なります。技術ドキュメントには本ツールでMarkdownテーブルを生成し、WebページにはJSON から HTML ツールでHTMLテーブルを生成することをお勧めします。

Markdownテーブルの最大行数制限は?

ツールはデフォルトで行数に上限を設けていません(HTMLテーブルツールとは異なります)。Markdownテーブルは純粋なテキストであるため、ブラウザのレンダリング負荷が小さいためです。ただし推奨事項:① 1000行を超える場合は複数テーブルまたはページネーションに分割;② GitHub READMEに埋め込む場合は単一ファイルが1MBを超えないように;③ Notion / Confluenceに埋め込む場合はプラットフォームの制限に従ってください。

Caption 見出しをカスタマイズするには?

「Multi / Split」戦略では、各テーブルのCaptionは自動的にトップレベル配列フィールド名を使用します(`### users`、`### orders` など)。「Single」戦略では、「Include Caption」をチェックしてカスタム見出しテキストを入力できます。Captionは `### H3` 3段階見出しで、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に少なくとも1件のオブジェクトデータを追加してください。

フラット化モードで列名が長すぎる(user.profile.address.city.country.code など)

ネスト階層が深すぎる場合は以下をお勧めします:① 「First Key」モードに切り替え(トップレベルフィールドのみ取得、ネストオブジェクトは列全体のJSONとして);② Max Depth を小さく(6から3〜4に);③ ソースJSON構造を修正し不要なネストを削減;④ ツールバーの Reset ボタンでデフォルトのフラット化設定に復元。

マルチテーブル分割モードで複数のテーブルが生成されない

ソースJSONがオブジェクト構造(純粋な配列ではなく)であり、フィールドに少なくとも1つの「要素がオブジェクトの配列」(`"users": [{...}, {...}]` など)が含まれていることを確認してください。トップレベルフィールドがすべて文字列 / 数値 / ネストオブジェクト自体の場合、「Multi」戦略は「Single」単一テーブルモードにフォールバックします。

キー名整形後、ヘッダーが空になった

Beautify Keys 機能は snake_case を Title Case に変換しますが、元々大文字 / 特殊文字で始まるキー(`__proto__`、`constructor` など)は変更しません。これらはJavaScriptの予約語です。ソースJSONで先にリネームしてからツールを使用することをお勧めします。

生成された Markdown が GitHub で空としてレンダリングされる

非常に稀です。一般的な原因:① テーブル内にエスケープされていない `|` 文字がある(本ツールは自動エスケープしますが、手動変更後に破壊される可能性あり);② セルにHTMLタグが含まれている(GitHub はデフォルトでレンダリングせず、ツールは自動的に `\n` を `<br>` に変換済み);③ ファイルエンコーディングが UTF-8 でない。

ダウンロードした table.md がエディタで空白表示される

ダウンロードしたファイルには Markdown テーブルコードのみ(`|` `-` 文字で始まる)が含まれ、完全な Markdown ドキュメントの骨組み(`# タイトル` `## 章` など)は含まれません。これは既存の Markdown ドキュメントに埋め込むための断片コードとして設計されています。手動でファイルの先頭に `# タイトル` などの見出しを追加するか、既存の .md ファイルの対応する位置に直接貼り付けてください。

ヘッダーの中国語が文字化けする

ソースJSONのキーに中国語が含まれている場合、ソースファイル自体が UTF-8 エンコーディングであることを確認してください。Excel からコピーしたJSONは GBK に変換されている可能性があります。先にエンコーディング変換ツールで UTF-8 に変換してから貼り付けてください。

生成されたテーブルを一括変更したい(会社ロゴの置換 / 色変更など)

生成後、右側で Markdown テーブルを Copy し、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 配列
角括弧 [...] で囲まれたオブジェクトの集合。本ツールは配列の各オブジェクトをテーブルの1行として扱います。空配列の場合はテーブルを生成しません(ヒントを表示)。
JSON オブジェクト
波括弧 {} で囲まれたキーと値のペアの集合。本ツールはオブジェクトの各キーをヘッダー、値をセルとして扱います。単一オブジェクトは自動的に単一行テーブルにラップされます。
ネストフラット化 (Flatten)
ネストオブジェクトをドット区切りのフラットなキー名に再帰展開すること。例:{user:{name:'A'}} → 'user.name'。本ツールは1〜6層の深度自動フラット化をサポートし、区切り文字を設定可能です。
キー名整形 (Beautify Keys)
snake_case または camelCase のキー名を Title Case に変換するルール:user_name → User Name、userProfileId → User Profile Id。本ツールの差別化能力の1つです。
スマートマルチテーブル分割 (Multi-Table Split)
JSONのトップレベル配列フィールド(users、orders など)を認識し、自動的に複数の独立したMarkdownテーブルに分割すること。本ツールの差別化能力の1つで、分割された各テーブルに自動的に ### 見出しが生成されます。
配置構文 (Alignment)
GFMテーブルのヘッダー区切り行は : 文字による配置制御をサポート::- 左揃え、:-: 中央揃え、-: 右揃え。本ツールは3つのボタンでワンクリック切替を提供します。
行インデックス列 (Index Column)
テーブルの左端に追加される # 番号列(1から始まるインクリメント)、ヘッダーテキストはカスタマイズ可能です。本ツールはデフォルトでオフ、オンにするとドキュメント内で行番号を参照しやすくなります。
Caption
Markdownにおける H3 3段階見出し(###)。本ツールは生成された各テーブルの上に自動的にこのラベルを追加します(デフォルトではトップレベル配列フィールド名またはユーザーカスタムテキストを使用)。ドキュメントナビゲーションとSEOの両方に役立ちます。
列ソート (Sort Columns)
テーブルのすべての列をアルファベット順に並べ替えるスイッチ。オンにすると、複数ドキュメントを比較する際に列順が安定して一貫し、diff ツールで見られる変更が識別しやすくなります。
空列除外 (Exclude Empty)
全行において特定の列がすべて null / undefined / 空文字列であることを検出した場合、その列を自動的に除外します。本ツールはデフォルトでオフ、オンにするとスパースデータのテーブル幅を大幅に削減します。
Markdown エスケープ (Escape)
Markdownテーブル内で特別な意味を持つ文字(|、\、改行など)を安全な形式(\|、\\、<br>)に変換し、テーブル構文の破壊を防ぐこと。本ツールはこのエスケープを自動的に行い、競合ツールに対する重要なアップグレードです。
ローカル履歴 (localStorage)
ブラウザが提供するローカルキー・バリューストレージ(容量約5〜10MB)。本ツールは localStorage を使用して最近の入力を永続化し、更新や誤ってページを閉じた後でも素早く復旧できます。
デバウンス (Debounce)
フロントエンドのパフォーマンス最適化技法:高頻度イベント(入力など)のコールバックを最後のトリガー後に1回だけ実行するように統合します。本ツールは500msのデバウンスを設定し、大きなファイル解析時のラグを防止します。

4種のネストオブジェクト処理モード比較表

ツールバーは異なるネストシナリオに対応する4種のモードを提供します。JSON構造の複雑さに応じて選択することをお勧めします:

モード処理動作列名の例適用シーン
Flatten(フラット化)ネストオブジェクトをドット区切りのキー名に再帰展開(深度1〜6調整可能)user.name / profile.roleGitHub / Stripe / Notion などの実際のAPIネスト構造;各フィールドを個別の列にしたい場合
First Key(第1層キー)オブジェクトの第1層キーのみ取得、ネストオブジェクト/配列は単一列のJSON文字列としてuser / tagsネスト構造が固定されていないか深すぎる(6層以上)場合;トップレベルフィールドの概要のみ必要な場合
Stringify(文字列化)すべての値を強制的に文字列として扱い、ネストオブジェクトは直接 JSON.stringify 後に | \ をエスケープuser(JSON全体として)デバッグシーン:元のJSON構造を目視検査用に保持したい場合
Raw JSON行全体のデータを1つの 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