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/기업 메신저에서 구조화된 데이터 공유(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가지 중첩 처리 모드: 평탄화(권장, 깊이 조절 가능) / 첫 번째 계층 키(중첩 객체를 단일 열 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` 두 열로 확장, 깊이 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의 각 객체 키가 처음 나타나는 순서를 헤더 순서로 사용합니다. 모든 열을 알파벳 순서로 정렬하려면(여러 문서 비교 시 열을 안정적으로 유지) 도구 모음의 '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` 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에 최소 하나의 객체 데이터를 추가하세요.

평탄화 모드에서 열 이름이 너무 긴 경우(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로 변환하지만 원래 대문자/특수 문자로 시작하는 키(`__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/빈 문자열'인 열을 제외합니다. 어떤 열에 한 행만 값이 있고 다른 행은 모두 빈 경우 해당 열은 제외되지 않습니다(올바른 동작). 희소 열을 제외해야 하는 경우 소스 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 객체
중괄호 {}로 둘러싸인 키-값 쌍 집합. 이 도구는 객체의 각 키를 헤더로, 값을 셀로 처리. 단일 객체는 자동으로 단일 행 테이블로 래핑됨.
중첩 평탄화(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 3단계 제목(###). 이 도구는 생성된 각 테이블 위에 자동으로 이 레이블 추가(기본적으로 최상위 배열 필드명 또는 사용자 정의 텍스트 사용). 문서 탐색과 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(첫 번째 계층 키)객체의 첫 번째 계층 키만 가져오고 중첩 객체/배열은 단일 열 JSON 문자열로user / tags중첩 구조가 고정되지 않았거나 너무 깊을 때(6계층 이상); 최상위 필드 개요만 필요할 때
Stringify(문자열화)모든 값을 강제로 문자열로 처리, 중첩 객체는 직접 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