JSON을 HTML로 변환
JSON 배열이나 중첩 객체를 웹페이지에 삽입 가능한 표준 HTML 테이블 코드로 한 번에 변환하는 무료 온라인 도구. 중첩 평탄화(user.name), 커스텀 CSS class, 반응형 가로 스크롤, 6가지 스타일 옵션, null 자리표시자, 행 수 제한 보호 지원. Code 및 iframe 이중 탭 실시간 미리보기.
관련 추천
JSON을 HTML로 및 HTML 테이블 소개
JSON을 HTML로 변환 도구(JSON to HTML Converter)는 JSON 데이터 구조를 표준 HTML 테이블 코드로 자동 변환하는 실용 도구입니다. 개발자를 수동으로 `<table>` / `<tr>` / `<td>` 템플릿을 작성하는 반복 작업에서 해방시키며, API에서 반환된 중첩 데이터, 설정 파일 또는 기타 JSON 구조를 웹 테이블로 빠르게 표시해야 하는 시나리오에 특히 적합합니다.
HTML 테이블(HTML Table)은 W3C 표준의 구조화된 데이터 표시 요소로, `<table>` 컨테이너, `<thead>` 헤더, `<tbody>` 본문, `<tr>` 행, `<th>` 헤더 셀, `<td>` 데이터 셀, `<caption>` 제목 등의 태그로 구성됩니다. 본 도구가 생성하는 코드는 이 시맨틱 구조를 엄격히 따르며 SEO 크롤링과 접근성(스크린 리더가 인식 가능)에 친화적입니다.
시장의 JSON을 HTML로 도구는 세 가지 범주로 나뉩니다: 첫 번째는 HTML 코드 문자열만 생성(예: tooltt.com, codebeautify.org), "복사하여 사용" 강조; 두 번째는 시각적 미리보기도 제공(예: 본 도구, jsontables.com, TableConvert), "WYSIWYG" 강조; 세 번째는 중첩 전개 + Tailwind class 주입 지원(본 도구의 차별화 포지셔닝), JSON을 최신 프론트엔드 프로젝트에 삽입해야 하는 엔지니어에게 적합.
본 도구의 "중첩 평탄화"는 대부분의 경쟁 제품에 대한 차별화된 하이라이트입니다: 기존 도구는 `{user:{name:'Alice'}}`을 `"{\"name\":\"Alice\"}"` 문자열로 그대로 표시하지만, 본 도구는 이를 `user.name` 열로 재귀 전개합니다(최대 6단계, 구분자 사용자 지정 가능). 이는 jq / lodash로 사전 평탄화 없이 GitHub API, Stripe API, Notion API 등 중첩 구조가 복잡한 실제 비즈니스 데이터를 직접 처리할 수 있음을 의미합니다.
또 다른 차별화된 하이라이트는 "커스텀 CSS class 훅"입니다: 본 도구는 인라인 스타일만 생성하는 것이 아니라 `<table>` 태그에 임의의 class 문자열을 주입할 수 있습니다. 이를 통해 Tailwind / Bootstrap / Bulma / DaisyUI 등 주요 CSS 프레임워크의 사용자는 본 도구가 생성한 HTML을 직접 재사용하고 CSS를 수동 편집하지 않고도 프로젝트와 일관된 디자인 스타일을 즉시 얻을 수 있습니다.
사용 사례
- 프론트엔드 개발: API에서 반환된 JSON 데이터를 HTML 테이블로 빠르게 렌더링하여 관리 대시보드나 문서 페이지에 삽입
- Tailwind / Bootstrap 프로젝트: "table class 명" 입력에 Tailwind 또는 Bootstrap 클래스명을 직접 입력하여 기존 스타일 시스템과 매끄럽게 통합
- 반응형 웹페이지: 기본 가로 스크롤 래퍼로 모바일 테이블이 페이지 레이아웃을 깨지 않음
- 데이터 시각화 표시: HTML 삽입을 지원하는 블로그 / 문서 / Confluence / Notion 등에 스타일이 적용된 테이블을 붙여넣기
- 보고서 생성: 백엔드에서 내보낸 JSON 데이터를 HTML 이메일 보고서로 빠르게 변환하여 업무 담당자에게 전송
- 프론트엔드 프로토타이핑: 디자인 단계에서 실제 데이터로 테이블 스타일을 미리보기하여 인도 전에 제품 / 디자인과 정렬
- CMS 시스템: WordPress / Drupal 등 CMS를 위한 정적 HTML 테이블 스니펫을 작성하여 템플릿 엔진의 복잡성 회피
- 테스트 및 디버깅: 브라우저 콘솔의 JSON.stringify 출력을 붙여넣어 복잡한 중첩 데이터의 2차원 구조를 빠르게 미리보기
- 이메일 템플릿: 테이블 HTML을 HTML 이메일에 인라인(Outlook 호환성 테스트 필요)
- API 문서 작성: Markdown / Swagger / Redoc에 HTML 테이블을 삽입하여 기본 JSON 예제 대체
- 교육 시나리오: 데이터 구조 수업에서 학생이 제출한 중첩 JSON 과제를 테이블로 변환하여 일괄 채점 표시
- 데이터 정제 보고서: 데이터베이스에서 내보낸 중첩 JSON을 평탄화 모드로 테이블로 변환하여 필드 비교 용이
이용 방법
- 왼쪽 편집기에 JSON 배열(권장) 또는 단일 객체를 붙여넣거나 "Sample"을 클릭하여 3개의 상품 예제를 로드, "Upload"를 클릭하여 .json / .txt 파일을 로드
- 툴바에서 중첩 처리 모드 선택(권장: "평탄화"). 중첩 객체는 `user.name` 등의 점으로 구분된 키로 자동 전개
- "Convert" 버튼 클릭(또는 Enter 키 누름)으로 변환 실행. 입력 시 500ms 디바운스 보호 작동
- 오른쪽 Code 탭에서 구문 강조가 적용된 HTML 테이블 코드 확인, Preview 탭에서 iframe 실시간 렌더링 확인
- 툴바에서 스타일 옵션(얼룩무늬 줄무늬 / 테두리 / 호버 / 컴팩트 / 반응형)을 체크하고 커스텀 table class 입력, null 자리표시자 설정. 실시간 미리보기가 자동 업데이트
- 만족스러우면 "Copy"를 클릭하여 HTML 코드 복사 또는 "Download"를 클릭하여 table.html로 다운로드. 재설정이 필요하면 Reset 클릭
주요 기능
- 중첩 객체 자동 평탄화: `{user:{name,age}}`를 `user.name`, `user.age` 등의 점 표기 키로 재귀 전개 (구분자 설정 가능), 수동 평탄화 스크립트 불필요
- 3가지 중첩 처리 모드: 평탄화(권장, 6단계까지 자동 전개) / 최상위 키(중첩 객체를 단일 열로) / 문자열(중첩 객체를 JSON 문자열로 미리보기)
- 커스텀 CSS class 훅: `<table>`과 선택적 외곽 `<div>`에 임의의 class 문자열을 주입하여 Tailwind / Bootstrap / Bulma 등 스타일 시스템과 매끄럽게 통합
- 반응형 가로 스크롤: 기본적으로 외곽을 `overflow-x:auto` 컨테이너로 래핑하여 좁은 화면에서 자동으로 가로 스크롤바가 나타나 페이지 레이아웃이 깨지지 않음
- 6가지 비주얼 스타일 토글: 얼룩무늬 줄무늬, 테두리, 행 호버, 컴팩트 모드, 첫 번째 인덱스 열(#), 테이블 캡션 — 툴바 체크박스로 즉시 적용
- Code + iframe 미리보기 이중 탭: Code 탭은 구문 강조 HTML 소스 표시, Preview 탭은 샌드박스 iframe에서 실제 테이블을 실시간 렌더링
- 타입 인식 강조: null은 회색 이탤릭(자리표시자 텍스트 사용자 지정 가능), 부울은 초록/빨강, 숫자는 파랑, 중첩 객체는 호버로 전체 JSON 확인
- 행 수 제한 보호: 기본 1000행 상한(1-10000 조정 가능), 초과 시 자동 절단 및 "절단됨" 알림으로 거대한 DOM 렌더링의 브라우저 부하 방지
- 생성 통계 피드백: 오른쪽 패널에 "X행 × Y열 생성됨" + 절단 배지를 실시간 표시, 긴 JSON 디버깅 시 데이터 규모를 한눈에 파악
- 한 번 클릭 복사 / 다운로드: Code 모드에서 HTML 소스를 클립보드에 복사하거나 table.html 파일로 다운로드하여 임의의 웹사이트에서 그대로 사용
- 샘플 데이터 + 파일 업로드: 3개의 상품 샘플(Laptop / Mouse / Desk Chair)을 한 번 클릭으로 로드, .json / .txt 파일의 드래그 앤 드롭 또는 클릭 업로드 지원
- 한 번 클릭 재설정: 툴바 오른쪽의 Reset 버튼으로 14개 설정을 한꺼번에 기본값으로 되돌려 빠른 시행착오에 최적
- 로컬 기록: localStorage 기반으로 최근 200개 입력을 영구 저장, 새로 고침이나 실수로 탭을 닫아도 복원 가능
- 완전 브라우저 로컬 처리: 모든 JSON 파싱, HTML 생성, 복사, 다운로드는 브라우저 내에서 이루어지며 데이터는 어떠한 서버에도 전송되지 않음
코드 예제
JavaScript: 중첩 평탄화 + Tailwind class 통합
javascript실제 개발에서 가장 일반적인 사용법: GitHub API를 호출하고 중첩 객체를 점 표기 키로 평탄화한 다음 Tailwind class로 프로젝트에 통합합니다.
// 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 = {}) {
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);
} else {
result[key] = v;
}
}
return result;
}
// 3) 평탄화된 데이터를 HTML 테이블로 변환, Tailwind class 주입
function generateHtmlTable(rows) {
const flat = rows.map(r => flattenObject(r));
const cols = [...new Set(flat.flatMap(r => Object.keys(r)))];
const thead = cols.map(c => `<th class="px-4 py-2 text-left">${c}</th>`).join('');
const tbody = flat.map(r =>
`<tr class="border-b hover:bg-gray-50">${cols.map(c => `<td class="px-4 py-2">${r[c] ?? 'N/A'}</td>`).join('')}</tr>`
).join('');
return `<table class="min-w-full text-sm">
<thead class="bg-gray-100"><tr>${thead}</tr></thead>
<tbody>${tbody}</tbody>
</table>`;
}
// 4) 페이지에 주입
const users = await fetchUsers();
const html = generateHtmlTable(users);
document.getElementById('table-container').innerHTML = html;
console.log(users.length + '행, ' + (Object.keys(flattenObject(users[0])).length) + '열 생성됨');Python: Flask에서 중첩 JSON을 HTML 테이블로(프론트엔드 의존성 없음)
python백엔드 템플릿 렌더링 시 Python 내장 라이브러리로 동일한 HTML 테이블을 생성할 수 있으며 중첩 평탄화와 class 주입을 지원합니다.
from flask import Flask, jsonify, render_template_string
import json
app = Flask(__name__)
TEMPLATE = """
<!doctype html><html><body>
<div class="overflow-x-auto">{{ table_html | safe }}</div>
</body></html>
"""
def flatten(obj, prefix='', sep='.', result=None):
"""중첩 객체를 재귀적으로 평탄화"""
if result is None:
result = {}
for k, v in (obj or {}).items():
key = f"{prefix}{sep}{k}" if prefix else k
if isinstance(v, dict):
flatten(v, key, sep, result)
else:
result[key] = v
return result
def json_to_html_table(data, table_class='min-w-full border-collapse',
max_rows=1000, responsive=True):
if isinstance(data, dict):
data = [data]
if not data:
return "<p>데이터 없음</p>"
# 행 절단
truncated = False
if len(data) > max_rows:
data = data[:max_rows]
truncated = True
# 각 행 평탄화
flat_rows = [flatten(row) for row in data]
# 모든 열명 수집(set으로 중복 제거, 삽입 순서 유지)
columns = []
for row in flat_rows:
for k in row.keys():
if k not in columns:
columns.append(k)
# thead 생성
thead = "".join(f'<th class="px-4 py-2 text-left bg-gray-100">{c}</th>' for c in columns)
# 테이블 행 생성
rows = []
for i, row in enumerate(flat_rows):
bg = "bg-gray-50" if i % 2 == 1 else ""
tds = "".join(
f'<td class="px-4 py-2 {bg}">{("N/A" if row.get(c) is None else row.get(c, ""))}</td>'
for c in columns
)
rows.append(f'<tr class="hover:bg-blue-50">{tds}</tr>')
html = f'<table class="{table_class}"><thead><tr>{thead}</tr></thead><tbody>{"".join(rows)}</tbody></table>'
if responsive:
html = f'<div class="overflow-x-auto">{html}</div>'
if truncated:
html = f'<p class="text-amber-600 text-sm">데이터를 처음 {max_rows}행으로 절단했습니다</p>{html}'
return html
@app.route('/api/users')
def users():
data = json.load(open('users.json'))
return jsonify(data)
@app.route('/users.html')
def users_html():
import requests
data = requests.get('http://localhost:5000/api/users').json()
return render_template_string(TEMPLATE, table_html=json_to_html_table(data))
if __name__ == '__main__':
app.run(debug=True)명령줄: jq 평탄화 + 본 도구로 정적 HTML 보고서 생성
bash운영 시나리오: jq로 중첩 JSON 로그를 집계한 다음 본 도구에 붙여넣어 Tailwind class가 적용된 HTML 보고서를 생성합니다.
# 1) jq를 사용하여 중첩 로그를 집계하고 점으로 구분된 키로 평탄화
cat app.log | jq -s '
group_by(.response.status_code) |
map({
status: .[0].response.status_code,
count: length,
"first_request.method": .[0].request.method,
"last_request.url": .[-1].request.url,
"first_seen": min_by(.timestamp).timestamp,
"last_seen": max_by(.timestamp).timestamp
})
' > stats.json
# 2) stats.json을 본 도구에 붙여넣기
# 툴바에서 "평탄화(권장)" 모드 선택
# "얼룩무늬 줄무늬 + 반응형 래퍼 + 테두리" 체크
# table class 명에 min-w-full text-sm border-collapse 입력
# null 자리표시자를 -로 설정(누락 필드는 -로 표시)
# Caption을 2026-07 운영 오류 로그 통계로 설정
# Convert를 클릭하여 table.html 다운로드
# 3) S3 / OSS 정적 사이트에 업로드
aws s3 cp table.html s3://my-bucket/reports/2026-07.html --acl public-read
# 또는 Confluence / Notion / VuePress 문서에 삽입
sed -i '' 's/min-w-full/min-w-full shadow-md/g' table.html
# 또는 HTML 이메일로 전송
mutt -e "set content_type=text/html" -s "2026-07 오류 로그" your@email.com < table.html자주 묻는 질문
JSON 데이터를 HTML 테이블로 어떻게 변환하나요?
JSON 배열(각 요소는 객체)을 왼쪽 입력 상자에 붙여넣고 툴바의 "Convert" 버튼을 클릭합니다. 오른쪽 Code 탭에 구문 강조가 적용된 HTML 테이블 코드가 표시되며 Preview 탭에서 iframe 실시간 렌더링을 볼 수 있습니다. "Copy"를 눌러 임의의 HTML 페이지에 붙여넣을 수 있습니다.
중첩된 JSON 객체를 HTML 테이블로 변환할 수 있나요?
예. 본 도구에는 중첩 평탄화 모드가 내장되어 있어 `{user:{name:'Alice',age:30}}`를 `user.name`과 `user.age` 두 열로 최대 6단계까지 재귀 전개합니다. 툴바에서 "최상위 키" 모드(중첩 객체를 단일 열 JSON 문자열로 유지) 또는 "문자열" 모드(모두 문자열로 처리)로 전환할 수도 있습니다.
평탄화 후 키 구분자를 변경할 수 있나요?
기본 구분자는 `.`(`user.name` 생성)이며 JavaScript / MongoDB / Lodash 등의 주요 규약을 따릅니다. `user_name`이나 `user/name`이 필요하면 툴바의 "구분자" 입력(고급 사용자용 표시)에서 사용자 지정할 수 있습니다.
생성된 HTML 테이블의 스타일을 사용자 지정할 수 있나요?
본 도구에는 세 가지 스타일 사용자 지정 방법이 있습니다: ① 툴바의 6가지 비주얼 토글(얼룩무늬 줄무늬, 테두리, 호버, 컴팩트, 인덱스, 캡션)이 즉시 적용, ② "table class 명" 입력에 커스텀 class(예: Tailwind의 `min-w-full border-collapse`)를 입력하면 `<table class="...">`에 주입, ③ 생성된 HTML을 사용 전에 직접 편집.
Tailwind / Bootstrap을 지원하나요?
예. "table class 명" 입력에 Tailwind 클래스(예: `min-w-full border-collapse text-sm`) 또는 Bootstrap 클래스(예: `table table-striped table-hover table-bordered`)를 입력하면 본 도구가 이러한 class를 `<table>` 태그에 주입합니다. 참고: 본 도구의 인라인 스타일이 최우선이며 Tailwind의 일부 스타일(배경색, 패딩)을 덮어씁니다. Tailwind를 사용할 때는 해당 툴바 옵션(예: 얼룩무늬 줄무늬)을 끄는 것을 권장합니다.
Code 탭과 Preview 탭의 차이점은 무엇인가요?
Code 탭은 구문 강조가 적용된 HTML 소스 코드를 표시하여 복사 및 편집에 편리합니다. Preview 탭은 샌드박스 iframe에서 실제 테이블을 렌더링하여 WYSIWYG 경험을 제공합니다. 내용은 동일하며 "코드 보기"와 "결과 보기"를 빠르게 전환할 수 있습니다.
생성된 HTML은 모바일 반응형을 지원하나요?
예. 본 도구는 기본적으로 "반응형 래퍼" 옵션을 활성화하여 `<table>`을 `<div style="overflow-x:auto;max-width:100%;">` 컨테이너로 래핑합니다. 화면 너비가 테이블 너비보다 작을 때 컨테이너에 자동으로 가로 스크롤바가 나타나 페이지 레이아웃이 깨지지 않습니다. 이 옵션은 툴바에서 끌 수 있습니다.
셀의 null, 부울, 숫자는 어떻게 표시되나요?
본 도구는 타입 인식 강조를 수행합니다: null은 회색 이탤릭(자리표시자는 툴바에서 `N/A`, `-` 등으로 사용자 지정 가능), 부울 true는 초록, false는 빨강, 숫자는 파랑, 일반 문자열은 그대로 표시. 평탄화 모드에서는 중첩 객체가 경로로 추출되며 다른 모드에서는 JSON 문자열로 변환되어 50자로 절단됩니다.
생성된 HTML 코드를 웹사이트에서 바로 사용할 수 있나요?
예. 출력은 표준 W3C HTML5 테이블 구조(`<table>` / `<thead>` / `<tbody>` / `<caption>`)이며 CSS는 인라인 style로 출력됩니다. 외부 CSS나 JS에 의존하지 않고 임의의 HTML 페이지에 바로 붙여넣어 단독으로 사용할 수 있습니다. table.html 파일로 다운로드할 수도 있습니다.
JSON을 HTML로와 JSON을 CSV로의 차이점은 무엇인가요?
HTML 테이블은 스타일이 적용된 시각적 형식으로 웹페이지에 삽입하는 데 적합합니다. CSV는 플레인 텍스트 데이터 형식으로 Excel / Pandas / 데이터베이스로 가져와 데이터 분석하는 데 적합합니다. 둘 다 동일한 JSON 데이터에서 생성됩니다. 본 도구로 레이아웃을 먼저 미리보고 JSON을 CSV로 도구로 데이터 버전을 내보내길 권장합니다.
테이블 헤더 텍스트를 어떻게 수정하나요?
본 도구는 JSON 객체의 첫 번째 수준 키를 테이블 헤더 `<th>` 콘텐츠로 자동 사용합니다(평탄화 모드에서는 `user.name`과 같은 점으로 구분된 전체 경로). 헤더에 다른 텍스트(예: 한국어)를 표시하고 싶다면 세 가지 방법이 있습니다: ① 소스 JSON의 키명을 한국어로 직접 수정, ② 생성 후 오른쪽 Code 탭에서 `<th>...</th>` 콘텐츠를 수동 편집, ③ sed로 생성된 HTML을 일괄 치환.
다운로드한 table.html이 브라우저에서 열면 빈 화면입니다. 어떻게 해야 하나요?
다운로드한 table.html에는 `<table>` 태그 구조(반응형 래퍼 `<div>` 포함 가능)만 포함되며 완전한 HTML 스켈레톤(`<html>` / `<head>` / `<body>`)은 포함되지 않습니다. 기존 웹페이지에 삽입할 스니펫으로 설계되었습니다. HTML 포맷 도구로 완전한 HTML 스켈레톤을 수동으로 추가하거나 프로젝트 페이지의 적절한 위치에 바로 붙여넣으세요.
1000행 이상의 테이블을 생성하면 페이지가 끊깁니다. 어떻게 해야 하나요?
본 도구는 기본적으로 1000행 상한 보호가 있으며 초과 시 "절단됨"이 표시됩니다. 5000행의 대규모 테이블이 정말 필요하면 툴바의 "최대 행 수"를 10000으로 올릴 수 있지만 다음 방법을 권장합니다: ① 페이지 매김 분할(페이지당 50행), ② IntersectionObserver로 가상 스크롤, ③ 데이터 표시용으로 TanStack Table / AG Grid 등 전용 컴포넌트 라이브러리 사용.
데이터가 서버에 업로드되나요? 프라이버시가 안전한가요?
모두 브라우저 내에서 로컬로 실행됩니다. 모든 JSON 파싱, HTML 생성, 복사, 다운로드 작업은 JavaScript에 의해 브라우저 내에서 이루어지며 파일 읽기도 로컬 FileReader에서만 처리됩니다. 민감한 API 응답이나 미공개 비즈니스 필드가 포함된 JSON도 안심하고 사용할 수 있으며 페이지를 닫으면 모든 데이터가 지워집니다.
문제 해결
"JSON 데이터를 입력하세요" 또는 유사한 오류가 표시됨
왼쪽 입력 상자가 비어 있거나 공백 문자만 있습니다. 유효한 JSON 콘텐츠를 붙여넣었거나 "Sample"을 클릭하여 샘플 데이터를 로드했거나 "Upload"를 클릭하여 .json / .txt 파일을 선택했는지 확인하세요.
"Unexpected token ... in JSON at position N"이 표시됨
JSON 형식이 잘못되었습니다. 일반적인 원인: ① 끝에 불필요한 쉼표(예: [{},{},]), ② 작은따옴표 대신 큰따옴표 사용, ③ JSON이 아닌 JS 객체 구문(예: {key: value}). JSON 포맷 도구로 먼저 검증하고 수정하세요.
생성된 테이블에 헤더만 있고 데이터 행이 없음
JSON 데이터가 빈 배열 []이거나 빈 객체 {}입니다. 본 도구는 빈 배열에 대해 `<!-- No valid objects found -->` 주석을 반환합니다. 소스 JSON에 최소 하나의 객체 데이터를 추가하세요.
평탄화 모드에서 열명이 너무 김 (예: user.profile.address.city.country.code)
중첩 단계가 너무 깊을 때의 권장 사항: ① "최상위 키" 모드로 전환(최상위 필드만 추출, 중첩 객체는 JSON 전체 열로), ② 소스 JSON 구조를 변경하여 불필요한 중첩 축소, ③ 툴바의 Reset 버튼으로 기본 평탄화 설정 복원.
Tailwind class 주입 후 스타일이 적용되지 않음
본 도구는 기본적으로 인라인 style(패딩, 배경 등)을 출력하며 Tailwind의 동일명 유틸리티 클래스를 덮어씁니다. 권장: ① Tailwind로 배경색을 제어하기 전에 해당 툴바 스타일 옵션(예: 얼룩무늬 줄무늬)을 끄기, ② 또는 PostCSS를 사용하여 생성된 HTML의 인라인 style 속성을 제거.
반응형 래퍼 후 테이블 높이가 압축됨
"반응형 래퍼"는 기본적으로 외곽 div의 높이를 테이블에 맞춥니다. 부모 컨테이너가 flex 레이아웃이고 높이가 지정되지 않은 경우 자식 테이블이 압축될 수 있습니다. 부모 컨테이너에 min-h-0을 추가하거나 테이블 높이를 설정하세요.
다운로드한 table.html이 브라우저에서 열면 빈 화면임
다운로드한 파일에는 <table> 스니펫(반응형 래퍼 <div> 포함 가능)만 포함되며 완전한 HTML 스켈레톤(<!doctype html> / <html> / <head> / <body>)은 포함되지 않습니다. 이는 기존 웹페이지에 쉽게 삽입할 수 있도록 설계되었습니다. HTML 포맷 도구로 완전한 스켈레톤을 추가하거나 프로젝트의 적절한 위치에 바로 붙여넣으세요.
테이블 헤더 한국어가 깨져 보임
소스 JSON의 키에 한국어가 포함된 경우 소스 파일 자체가 UTF-8 인코딩인지 확인하세요. Excel에서 복사한 JSON은 GBK로 변환될 수 있으므로 인코딩 변환 도구로 UTF-8로 변환한 후 붙여넣으세요.
생성된 테이블을 일괄 수정하고 싶음(예: 회사 로고 교체 / 색상 변경)
생성 후 오른쪽 Code 탭에서 HTML을 복사하고 sed / PostCSS / 사용자 정의 스크립트로 스타일 속성을 일괄 치환합니다. 일반적인 명령: sed -i '' 's/#f9fafb/#your-color/g' table.html.
1000행 이상 테이블 생성 시 페이지가 끊김
본 도구는 기본적으로 1000행 상한 보호가 설정되어 있습니다. 툴바에서 maxRows를 10000까지 조정할 수 있지만 거대한 DOM(>1000 노드) 렌더링 시 브라우저 성능이 현저히 저하됩니다. 권장: ① 페이지 매김 분할(페이지당 50행), ② IntersectionObserver로 가상 스크롤, ③ 데이터 표시 시나리오에서는 TanStack Table / AG Grid 등 전용 컴포넌트 라이브러리 사용.
기록이 손실됨
기록은 브라우저의 localStorage에 저장됩니다. 브라우저 데이터 삭제 / 시크릿 모드 전환 / 다른 브라우저 사용 시 기록이 손실됩니다. 본 도구는 기록을 서버에 업로드하지 않으므로 기기 간 동기화할 수 없습니다.
행 수 제한 후 원본 데이터를 볼 수 없음
본 도구는 기본적으로 maxRows=1000이며 초과 시 절단됩니다. 소스 데이터가 1000행 이상이지만 처음 N행의 미리보기만 필요한 경우 maxRows를 더 작게(예: 100) 설정하면 더 빠르게 결과를 얻을 수 있습니다. 전체 데이터가 필요한 경우 Python Faker / Node.js 등 스크립트로 직접 처리하는 것을 권장합니다.
용어집
- HTML 테이블 (HTML Table)
- W3C 표준의 구조화된 데이터 표시 요소. table / thead / tbody / tr / th / td / caption 등의 시맨틱 태그로 구성됩니다. 본 도구가 생성하는 코드는 이 구조를 엄격히 따릅니다.
- JSON 배열
- 대괄호 [...]로 묶인 객체의 집합. 본 도구는 배열의 각 객체를 테이블의 한 행으로 사용합니다. 빈 배열인 경우 테이블을 생성하지 않습니다(알림 표시).
- JSON 객체
- 중괄호 {}로 묶인 키-값 쌍의 집합. 본 도구는 객체의 각 키를 테이블 헤더로, 값을 셀로 사용합니다. 단일 객체는 자동으로 한 행 테이블로 래핑됩니다.
- 중첩 평탄화 (Flatten)
- 중첩된 객체를 점으로 구분된 플랫 키로 재귀적으로 전개. 예: {user:{name:'A'}} → 'user.name'. 본 도구는 6단계까지 자동 평탄화를 지원하며 구분자는 사용자 지정 가능합니다.
- thead / tbody
- HTML 테이블의 두 시맨틱 구분: thead는 헤더 행(th)을 래핑하고 tbody는 데이터 행(td)을 래핑합니다. 본 도구가 생성하는 코드는 이 두 부분을 엄격히 구분합니다.
- Caption
- 테이블 제목 태그로, 테이블 내부 첫 번째 행에 위치합니다. 본 도구는 커스텀 캡션 텍스트를 지원하며 활성화되면 지정된 제목이 테이블 상단에 표시되어 SEO와 접근성에 모두 도움이 됩니다.
- 얼룩무늬 줄무늬 (Zebra Striping)
- 홀수 행과 짝수 행이 다른 배경색을 교대로 사용하는 시각적 패턴. 일반적으로 #fff / #f9fafb 조합이 사용됩니다. 본 도구에서는 "얼룩무늬 줄무늬" 체크박스로 활성화하며 긴 테이블의 가독성을 크게 향상시킵니다.
- 인라인 스타일 (Inline Style)
- 외부 스타일시트를 참조하지 않고 HTML 태그의 style 속성으로 직접 CSS를 작성하는 것. 본 도구는 기본적으로 모든 스타일을 인라인 style로 출력하여 추가 CSS 파일 없이 코드를 그대로 사용할 수 있습니다.
- CSS class 훅
- 본 도구의 차별화 기능: `<table>` 태그에 임의의 class 문자열(Tailwind 클래스 등)을 주입하여 기존 CSS 프레임워크와 매끄럽게 통합. 이는 경쟁 제품에 대한 핵심 업그레이드입니다.
- iframe sandbox
- HTML 태그 iframe의 보안 샌드박스 모드로, 스크립트 실행과 양식 제출을 제한할 수 있습니다. 본 도구는 sandbox="allow-same-origin"의 iframe을 사용하여 생성된 HTML을 미리보기하며 우발적인 스크립트 실행을 방지합니다.
- 타입 인식 강조
- 본 도구의 차별화 기능: 셀 값의 JS 타입(null / boolean / number / object / string)에 따라 다른 색상을 적용하여 API 데이터 디버깅을 더 직관적으로 만듭니다.
- localStorage 기록
- 브라우저가 제공하는 로컬 키-값 저장소(용량 약 5-10MB). 본 도구는 localStorage를 사용하여 최근 200개 입력을 영구 저장하며 새로 고침이나 실수로 탭을 닫은 후 빠르게 복원할 수 있습니다.
- 반응형 래퍼 (Responsive Wrapper)
- 테이블 외곽을 `<div style="overflow-x:auto;max-width:100%;">`로 래핑하여 좁은 화면에서 자동으로 가로 스크롤바가 나타나도록 합니다. 본 도구는 기본적으로 활성화되어 있으며 툴바에서 끌 수 있습니다.
- 디바운스 (Debounce)
- 프론트엔드 성능 최적화 기법: 고빈도 이벤트(예: 입력)의 콜백을 마지막 트리거 후 한 번 실행되도록 병합. 본 도구는 500ms 디바운스를 설정하여 대용량 파일 파싱의 끊김을 방지합니다.
- W3C HTML5
- World Wide Web Consortium(W3C)이 제정한 HTML 표준 사양. 본 도구가 생성하는 코드는 HTML5 사양을 준수하며 모든 모던 브라우저에서 올바르게 렌더링됩니다.
3가지 중첩 처리 모드 비교표
툴바는 서로 다른 중첩 시나리오에 대응하는 3가지 모드를 제공합니다. JSON 구조의 복잡도에 따라 선택하세요:
| 모드 | 처리 동작 | 샘플 열명 | 적용 시나리오 |
|---|---|---|---|
평탄화(권장) | 중첩 객체를 점으로 구분된 키로 재귀 전개(깊이 ≤ 6) | user.name / user.tags.0 | GitHub / Stripe / Notion 등 실제 API 중첩 구조; 각 필드를 별도의 열로 원하는 경우 |
최상위 키 | 객체의 첫 번째 수준 키만 추출. 중첩 객체 / 배열은 단일 열 JSON 문자열로 | user / tags | 중첩 구조가 불안정하거나 너무 깊을 때(>6단계); 최상위 필드 개요만 필요한 경우 |
문자열 | 모든 값을 강제로 문자열로 처리. 중첩 객체는 직접 JSON.stringify | user(JSON 블롭으로) | 디버깅 시나리오: 원본 JSON 구조를 유지하여 육안으로 검사 |
툴바 14개 설정 옵션 요약표
툴바의 14개 설정 옵션과 그 시각적 차이를 일람화하여 빠른 조합 선택을 가능하게 합니다:
| 옵션 | 유형 | 시각 효과 / 동작 |
|---|---|---|
includeIndex | checkbox | 테이블 최좌측에 # 번호 열 추가(1부터 증가) |
striped | checkbox | 홀/짝수 행 배경색 교대(흰색 / #f9fafb) |
bordered | checkbox | 셀 주변 1px 회색 테두리 + 헤더 하단 2px 강조선 |
hover | checkbox | 행 호버 시 옅은 회색 #f9fafb 배경 |
compact | checkbox | 셀 패딩을 10px×14px에서 6px×8px로 축소 |
responsive | checkbox | overflow-x:auto 컨테이너로 래핑, 좁은 화면에서 가로 스크롤 |
flattenMode | select | 중첩 처리: 평탄화(권장) / 최상위 키 / 문자열 |
tableClass | text | <table class="...">에 주입되는 커스텀 CSS class |
nullPlaceholder | text | null / undefined 셀의 표시 텍스트(공백 시 'null' 표시) |
maxRows | number | 최대 생성 행 수(1-10000), 초과 시 자동 절단 및 알림 |
caption | text | 테이블 상단에 표시되는 커스텀 제목 텍스트(caption-side: top) |
indexHeader | text | 인덱스 열의 헤더 텍스트(기본 #) |
flattenSeparator | text | 평탄화 모드의 키 구분자(기본 ., _ / - 등으로 변경 가능) |
wrapperClass | text | 반응형 래퍼 <div>의 커스텀 CSS class(고급 사용자용) |
셀 타입 인식 강조 규칙 요약표
본 도구는 JSON 값의 JavaScript 타입에 따라 다른 색상을 자동 적용하여 데이터 타입을 빠르게 식별할 수 있도록 합니다:
| JS 타입 | 판단 방법 | 적용 스타일 | 출력 예 |
|---|---|---|---|
null / undefined | val === null || val === undefined | color: #9ca3af; font-style: italic; 자리표시자 텍스트 표시(사용자 지정 가능) | <span style="color:#9ca3af;font-style:italic;">N/A</span> |
boolean (true) | typeof val === 'boolean' && val | color: #059669; | <span style="color:#059669;">true</span> |
boolean (false) | typeof val === 'boolean' && !val | color: #dc2626; | <span style="color:#dc2626;">false</span> |
number | typeof val === 'number' | color: #2563eb; | <span style="color:#2563eb;">42</span> |
object / array (평탄화 모드) | type === 'object' + 평탄화 모드에서 경로로 추출 | 중첩 객체를 경로로 아토믹 값 추출 | user.name → 'Alice' |
object / array (기타 모드) | typeof val === 'object' | JSON.stringify 후 이스케이프하여 50자로 절단, 보라색 이탤릭 + title 호버로 전체 JSON 표시 | <span style="color:#7c3aed;font-style:italic;" title="...">{"id":1…</span> |
string | 기타 | 기본 텍스트 색상 #4b5563 | Jennifer Martinez |
Privacy & Security
본 JSON을 HTML로 도구는 모든 JSON 파싱, 중첩 평탄화, HTML 생성, 복사, 다운로드 작업을 JavaScript에 의해 브라우저 내에서만 실행합니다. 입력된 JSON 데이터와 생성된 HTML 코드는 서버에 업로드되지 않으며 로그 기록, 캐시, 클라우드 저장도 일체 이루어지지 않습니다. 미공개 API 응답과 내부 비즈니스 필드가 포함된 민감한 JSON도 안심하고 사용할 수 있으며 페이지를 닫으면 모든 데이터가 삭제됩니다.
Authoritative References
- JSON 압축
- CSV 를 JSON으로
- JSON을 CSV로
- JSON Diff
- JSON Escape / Unescape
- JSON 평탄화
- JSON 포맷터
- JSON 생성기
- JSONPath 온라인 쿼리
- JSON 병합
- JSON 복구
- JSON 스키마 검증기
- JSON 정렬
- JSON Stringify
- JSON을 HTML로 변환
- JSON을 Java로
- JSON을 Markdown으로
- JSON을 SQL로 변환
- JSON을 TOML로 변환
- JSON을 TypeScript로 변환
- XML을 JSON으로
- JSON을 XML로 변환
- YAML을 JSON으로 변환
- JSON → YAML 변환
- JSON을 Go로
- JSON을 Rust로
- JSON → Swift
- JSON에서 C#로
- JSON을 C++로
- JSON을 PHP로
- JSON을 Python으로