JSON sang HTML
Công cụ trực tuyến miễn phí chuyển đổi mảng JSON hoặc đối tượng lồng nhau thành mã bảng HTML chuẩn có thể nhúng vào trang web. Hỗ trợ làm phẳng lồng nhau, lớp CSS tùy chỉnh, cuộn ngang, 6 kiểu trực quan, trình giữ chỗ null, bảo vệ giới hạn dòng. Tab kép Code và iframe để xem trước theo thời gian thực.
Đề xuất Liên quan
Về JSON sang HTML và bảng HTML
Bộ chuyển đổi JSON sang HTML (JSON to HTML Converter) là một công cụ thực tế tự động chuyển đổi cấu trúc dữ liệu JSON thành mã bảng HTML chuẩn. Nó giải phóng nhà phát triển khỏi công việc lặp đi lặp lại khi viết thủ công các mẫu `<table>` / `<tr>` / `<td>`, lý tưởng để nhanh chóng hiển thị các phản hồi API lồng nhau, tệp cấu hình hoặc bất kỳ cấu trúc JSON nào dưới dạng bảng web.
Bảng HTML (HTML Table) là phần tử hiển thị dữ liệu có cấu trúc chuẩn W3C, bao gồm vùng chứa `<table>`, tiêu đề `<thead>`, thân `<tbody>`, hàng `<tr>`, ô tiêu đề `<th>`, ô dữ liệu `<td>`, chú thích `<caption>` và các thẻ ngữ nghĩa khác. Mã được tạo bởi công cụ này tuân thủ chặt chẽ cấu trúc ngữ nghĩa này, thân thiện với SEO và khả năng truy cập (trình đọc màn hình có thể nhận dạng).
Có ba loại công cụ JSON sang HTML trên thị trường: loại thứ nhất chỉ tạo chuỗi mã HTML (ví dụ: tooltt.com, codebeautify.org), nhấn mạnh "sao chép và sử dụng"; loại thứ hai cũng cung cấp bản xem trước trực quan (ví dụ: công cụ này, jsontables.com, TableConvert), nhấn mạnh "WYSIWYG"; loại thứ ba hỗ trợ mở rộng lồng nhau + chèn lớp Tailwind (định vị khác biệt của công cụ này), phù hợp cho các kỹ sư cần nhúng JSON vào các dự án frontend hiện đại.
"Làm phẳng lồng nhau" của công cụ này là điểm nhấn khác biệt so với hầu hết các đối thủ cạnh tranh: các công cụ truyền thống sẽ chỉ hiển thị `{user:{name:'Alice'}}` dưới dạng chuỗi `"{\"name\":\"Alice\"}"`, nhưng công cụ này mở rộng đệ quy nó thành cột `user.name` (lên đến 6 cấp, dấu phân cách có thể cấu hình). Điều này có nghĩa là bạn có thể xử lý trực tiếp dữ liệu kinh doanh thực tế với cấu trúc lồng nhau phức tạp như GitHub API, Stripe API, Notion API, mà không cần làm phẳng trước bằng jq / lodash.
Một điểm nhấn khác biệt khác là "Hook lớp CSS tùy chỉnh": công cụ không chỉ tạo kiểu nội tuyến mà còn cho phép chèn bất kỳ chuỗi lớp nào vào thẻ `<table>`. Điều này cho phép người dùng của các khung CSS chính như Tailwind / Bootstrap / Bulma / DaisyUI trực tiếp sử dụng lại HTML được tạo bởi công cụ này và ngay lập tức có được kiểu thiết kế nhất quán với dự án của họ, mà không cần chỉnh sửa CSS thủ công.
Trường hợp sử dụng
- Phát triển frontend: nhanh chóng kết xuất dữ liệu JSON từ API thành bảng HTML để nhúng vào bảng điều khiển quản trị hoặc trang tài liệu
- Dự án Tailwind / Bootstrap: dán tên lớp Tailwind hoặc Bootstrap trực tiếp vào trường lớp bảng để tích hợp liền mạch với hệ thống kiểu hiện có
- Trang web đáp ứng: bao bọc cuộn ngang mặc định ngăn bảng di động phá vỡ bố cục trang
- Hiển thị trực quan hóa dữ liệu: dán các bảng có kiểu vào blog, tài liệu, Confluence, Notion hoặc bất kỳ nền tảng nào hỗ trợ nhúng HTML
- Tạo báo cáo: nhanh chóng chuyển đổi dữ liệu JSON xuất từ backend thành báo cáo email HTML cho các bên liên quan kinh doanh
- Tạo nguyên mẫu frontend: xem trước kiểu bảng với dữ liệu thực trong giai đoạn thiết kế để căn chỉnh với sản phẩm và thiết kế trước khi giao
- Hệ thống CMS: tạo đoạn mã bảng HTML tĩnh cho WordPress, Drupal và các nền tảng CMS khác, tránh sự phức tạp của công cụ mẫu
- Kiểm thử và gỡ lỗi: dán đầu ra JSON.stringify từ bảng điều khiển trình duyệt để nhanh chóng xem trước cấu trúc hai chiều của dữ liệu lồng nhau phức tạp
- Mẫu email: nhúng HTML bảng vào email HTML (kiểm tra khả năng tương thích với Outlook)
- Viết tài liệu API: nhúng bảng HTML trong Markdown, Swagger, Redoc thay thế cho các ví dụ JSON mặc định
- Tình huống giảng dạy: chuyển đổi các bài tập JSON lồng nhau trong khóa học cấu trúc dữ liệu thành bảng để chấm điểm hàng loạt
- Báo cáo làm sạch dữ liệu: chuyển đổi JSON lồng nhau từ xuất cơ sở dữ liệu thành bảng thông qua chế độ Làm phẳng để so sánh trường dễ dàng
Cách Sử dụng
- Dán mảng JSON (khuyến nghị) hoặc một đối tượng đơn lẻ vào trình chỉnh sửa bên trái, hoặc nhấp "Sample" để tải 3 ví dụ sản phẩm, hoặc nhấp "Upload" để tải tệp .json / .txt
- Chọn chế độ xử lý lồng nhau trên thanh công cụ (khuyến nghị: "Làm phẳng"). Các đối tượng lồng nhau tự động mở rộng thành các khóa phân cách bằng dấu chấm như `user.name`
- Nhấp nút "Convert" (hoặc chỉ cần nhấn Enter) để kích hoạt chuyển đổi. Đầu vào được bảo vệ bằng debounce 500ms
- Chuyển sang tab Code bên phải để xem mã bảng HTML có tô sáng cú pháp, hoặc tab Preview để xem kết xuất iframe theo thời gian thực
- Bật các tùy chọn kiểu trên thanh công cụ (sọc ngựa vằn / đường viền / di chuột / thu gọn / đáp ứng), nhập lớp bảng tùy chỉnh, đặt trình giữ chỗ null — bản xem trước trực tiếp cập nhật ngay lập tức
- Khi hài lòng, nhấp "Copy" để sao chép mã HTML hoặc "Download" để lưu dưới dạng table.html. Nhấp Reset nếu bạn cần bắt đầu lại
Tính năng
- Tự động làm phẳng đối tượng lồng nhau: mở rộng đệ quy `{user:{name,age}}` thành các khóa dấu chấm `user.name`, `user.age` (dấu phân cách có thể cấu hình), không cần script
- Ba chế độ xử lý lồng nhau: Làm phẳng (Khuyến nghị, tự động mở rộng đến 6 cấp) / Khóa cấp cao nhất (đối tượng lồng nhau làm một cột) / Chuỗi (đối tượng lồng nhau thành chuỗi JSON)
- Hook lớp CSS tùy chỉnh: chèn bất kỳ chuỗi lớp nào vào `<table>` và `<div>` bao bọc bên ngoài tùy chọn, tích hợp liền mạch với Tailwind / Bootstrap / Bulma
- Cuộn ngang đáp ứng: bao bọc bên ngoài `overflow-x:auto` theo mặc định, thanh cuộn ngang tự động xuất hiện trên màn hình hẹp
- 6 công tắc kiểu trực quan: sọc ngựa vằn, đường viền, đánh dấu di chuột, chế độ thu gọn, cột chỉ mục đầu tiên (#), chú thích bảng — áp dụng ngay từ hộp kiểm trên thanh công cụ
- Tab kép xem trước Code + iframe: tab Code hiển thị mã HTML có tô sáng cú pháp, tab Preview kết xuất bảng thực trong iframe hộp cát theo thời gian thực
- Tô sáng theo loại: null hiển thị màu xám in nghiêng (văn bản giữ chỗ có thể tùy chỉnh), boolean xanh/đỏ, số xanh dương, đối tượng lồng nhau xem toàn bộ JSON khi di chuột
- Bảo vệ giới hạn dòng: mặc định 1000 dòng (1-10000), tự động cắt bớt với thông báo "Đã cắt bớt" để tránh trình duyệt chậm
- Phản hồi thống kê tạo: bảng bên phải hiển thị "Đã tạo X dòng × Y cột" + huy hiệu cắt bớt theo thời gian thực
- Sao chép / tải xuống một cú nhấp: ở chế độ Code sao chép mã HTML vào bộ nhớ tạm hoặc tải xuống dưới dạng tệp table.html
- Dữ liệu mẫu + tải tệp lên: 3 mẫu sản phẩm tích hợp (Laptop / Mouse / Desk Chair) tải bằng một cú nhấp, hỗ trợ kéo thả hoặc nhấp để tải tệp .json / .txt
- Đặt lại bằng một cú nhấp: nút Reset trên thanh công cụ khôi phục ngay tất cả 14 cấu hình về mặc định
- Lịch sử cục bộ: dựa trên localStorage, lưu giữ 200 lần nhập gần nhất, có thể khôi phục sau khi làm mới hoặc vô tình đóng tab
- Xử lý hoàn toàn trong trình duyệt: tất cả phân tích JSON, tạo HTML, sao chép và tải xuống đều trong trình duyệt, không gửi dữ liệu đến bất kỳ máy chủ nào
Ví dụ mã
JavaScript: Làm phẳng lồng nhau + Tích hợp lớp Tailwind
javascriptTrường hợp sử dụng thực tế phổ biến nhất: gọi GitHub API, làm phẳng các đối tượng lồng nhau thành các khóa dấu chấm, sau đó tích hợp với các lớp Tailwind trong dự án của bạn.
// 1) Gọi GitHub API để lấy danh sách người dùng
async function fetchUsers() {
const res = await fetch('https://api.github.com/users?per_page=10');
return await res.json();
}
// 2) Hàm làm phẳng lồng nhau (tương đương với logic làm phẳng của công cụ)
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) Chuyển đổi dữ liệu đã làm phẳng thành bảng HTML, chèn các lớp Tailwind
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) Chèn vào trang
const users = await fetchUsers();
const html = generateHtmlTable(users);
document.getElementById('table-container').innerHTML = html;
console.log('Đã tạo ' + users.length + ' dòng, ' + (Object.keys(flattenObject(users[0])).length) + ' cột');Python: JSON lồng nhau sang bảng HTML trong Flask (Không phụ thuộc Frontend)
pythonKhi kết xuất mẫu backend, bạn có thể sử dụng các thư viện tích hợp sẵn của Python để tạo cùng một bảng HTML, hỗ trợ làm phẳng lồng nhau và chèn lớp.
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):
"""Làm phẳng đệ quy các đối tượng lồng nhau"""
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>Không có dữ liệu</p>"
# Cắt bớt dòng
truncated = False
if len(data) > max_rows:
data = data[:max_rows]
truncated = True
# Làm phẳng từng dòng
flat_rows = [flatten(row) for row in data]
# Thu thập tất cả tên cột (dùng set để khử trùng lặp, giữ thứ tự chèn)
columns = []
for row in flat_rows:
for k in row.keys():
if k not in columns:
columns.append(k)
# Tạo thead
thead = "".join(f'<th class="px-4 py-2 text-left bg-gray-100">{c}</th>' for c in columns)
# Tạo các dòng bảng
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">Dữ liệu đã được cắt bớt xuống {max_rows} dòng đầu tiên</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)Dòng lệnh: Làm phẳng với jq + Tạo báo cáo HTML tĩnh
bashTình huống vận hành: tổng hợp nhật ký JSON lồng nhau bằng jq, sau đó dán vào công cụ này để tạo báo cáo HTML có lớp Tailwind.
# 1) Sử dụng jq để tổng hợp và làm phẳng nhật ký lồng nhau thành các khóa dấu chấm
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) Dán stats.json vào công cụ này
# Chọn chế độ "Làm phẳng (Khuyến nghị)" trên thanh công cụ
# Đánh dấu "Sọc ngựa vằn + Bao bọc đáp ứng + Đường viền"
# Trong ô tên lớp bảng nhập: min-w-full text-sm border-collapse
# Đặt trình giữ chỗ null: - (các trường bị thiếu hiển thị là -)
# Đặt Chú thích: Thống kê nhật ký lỗi sản xuất 2026-07
# Nhấp Convert rồi tải xuống table.html
# 3) Tải lên trang web tĩnh S3 / OSS
aws s3 cp table.html s3://my-bucket/reports/2026-07.html --acl public-read
# Hoặc nhúng vào tài liệu Confluence / Notion / VuePress
sed -i '' 's/min-w-full/min-w-full shadow-md/g' table.html
# Hoặc gửi dưới dạng email HTML
mutt -e "set content_type=text/html" -s "Nhật ký lỗi 2026-07" your@email.com < table.htmlCâu hỏi Thường gặp
Làm thế nào để chuyển đổi dữ liệu JSON thành bảng HTML?
Dán mảng JSON (mỗi phần tử là một đối tượng) vào ô nhập bên trái, nhấp nút "Convert" trên thanh công cụ. Tab Code bên phải sẽ hiển thị mã bảng HTML có tô sáng cú pháp, tab Preview hiển thị kết xuất iframe theo thời gian thực. Nhấp "Copy" để dán vào bất kỳ trang HTML nào.
Các đối tượng JSON lồng nhau có thể chuyển đổi thành bảng HTML không?
Có. Công cụ này có chế độ làm phẳng lồng nhau tích hợp, mở rộng đệ quy `{user:{name:'Alice',age:30}}` thành hai cột `user.name` và `user.age` lên đến 6 cấp. Bạn cũng có thể chuyển sang chế độ "Khóa cấp cao nhất" (giữ đối tượng lồng nhau làm chuỗi JSON một cột) hoặc chế độ "Chuỗi" (xử lý mọi thứ thành chuỗi).
Tôi có thể thay đổi dấu phân cách khóa sau khi làm phẳng không?
Dấu phân cách mặc định là `.` (tạo ra `user.name`), phù hợp với các quy ước phổ biến trong JavaScript / MongoDB / Lodash. Nếu cần `user_name` hoặc `user/name`, hãy tùy chỉnh trong ô nhập "Dấu phân cách" trên thanh công cụ (hiển thị cho người dùng nâng cao).
Tôi có thể tùy chỉnh kiểu của bảng HTML được tạo không?
Công cụ cung cấp ba cách tùy chỉnh kiểu: ① 6 công tắc trực quan trên thanh công cụ (sọc ngựa vằn, đường viền, di chuột, thu gọn, chỉ mục, chú thích) áp dụng ngay lập tức; ② nhập lớp tùy chỉnh vào ô "tên lớp bảng" (ví dụ: Tailwind `min-w-full border-collapse`), sẽ được chèn vào `<table class="...">`; ③ chỉnh sửa trực tiếp HTML được tạo trước khi sử dụng.
Có hỗ trợ Tailwind / Bootstrap không?
Có. Nhập các lớp Tailwind (ví dụ: `min-w-full border-collapse text-sm`) hoặc lớp Bootstrap (ví dụ: `table table-striped table-hover table-bordered`) vào ô "tên lớp bảng" — công cụ sẽ chèn các lớp này vào thẻ `<table>`. Lưu ý: kiểu nội tuyến của công cụ có mức ưu tiên cao nhất và sẽ ghi đè một số kiểu Tailwind (màu nền, padding). Chúng tôi khuyến nghị tắt tùy chọn thanh công cụ tương ứng (ví dụ: sọc ngựa vằn) trước khi sử dụng Tailwind.
Sự khác biệt giữa tab Code và tab Preview là gì?
Tab Code hiển thị mã nguồn HTML với tô sáng cú pháp, thuận tiện cho việc sao chép và chỉnh sửa. Tab Preview kết xuất bảng thực trong iframe hộp cát để có trải nghiệm WYSIWYG. Nội dung giống hệt nhau — cả hai dạng giúp bạn dễ dàng chuyển đổi giữa "xem mã" và "xem kết quả".
HTML được tạo có hỗ trợ thiết kế đáp ứng trên di động không?
Có. Công cụ bật tùy chọn "Bao bọc đáp ứng" theo mặc định, bao bọc `<table>` trong vùng chứa `<div style="overflow-x:auto;max-width:100%;">`. Khi chiều rộng màn hình nhỏ hơn chiều rộng bảng, vùng chứa sẽ tự động hiển thị thanh cuộn ngang, ngăn bảng phá vỡ bố cục trang. Tùy chọn này có thể tắt trên thanh công cụ.
Các giá trị null, boolean và số trong ô được hiển thị như thế nào?
Công cụ thực hiện tô sáng theo loại: null hiển thị màu xám in nghiêng (văn bản giữ chỗ có thể tùy chỉnh thành `N/A`, `-`, v.v.), boolean true màu xanh, false màu đỏ, số màu xanh dương, chuỗi thường hiển thị nguyên trạng; đối tượng lồng nhau ở chế độ Làm phẳng được trích theo đường dẫn, ở các chế độ khác được chuyển thành chuỗi JSON và cắt bớt ở 50 ký tự.
Mã HTML được tạo có thể sử dụng trực tiếp trên trang web không?
Có. Đầu ra là cấu trúc bảng W3C HTML5 chuẩn (`<table>` / `<thead>` / `<tbody>` / `<caption>`), CSS được xuất dưới dạng kiểu nội tuyến. Có thể dán trực tiếp vào bất kỳ trang HTML nào để sử dụng độc lập, không phụ thuộc vào CSS hoặc JS bên ngoài. Bạn cũng có thể tải xuống dưới dạng tệp table.html.
Sự khác biệt giữa JSON sang HTML và JSON sang CSV là gì?
Bảng HTML là định dạng trực quan có kiểu, hoàn hảo để nhúng vào trang web; CSV là định dạng dữ liệu văn bản thuần, hoàn hảo để nhập vào Excel / Pandas / cơ sở dữ liệu để phân tích. Cả hai đều được tạo từ cùng một dữ liệu JSON. Chúng tôi khuyến nghị xem trước bố cục trong công cụ này trước, sau đó sử dụng công cụ JSON sang CSV để xuất phiên bản dữ liệu.
Làm thế nào để sửa đổi văn bản tiêu đề bảng?
Công cụ tự động sử dụng các khóa cấp đầu tiên của đối tượng JSON làm nội dung tiêu đề bảng `<th>` (ở chế độ Làm phẳng, sử dụng đường dẫn đầy đủ phân cách bằng dấu chấm, ví dụ: `user.name`). Nếu bạn muốn tiêu đề hiển thị văn bản khác (ví dụ: tiếng Việt), có ba tùy chọn: ① Sửa đổi tên khóa JSON nguồn trực tiếp; ② Chỉnh sửa thủ công nội dung `<th>...</th>` trong tab Code sau khi tạo; ③ Sử dụng sed để thay thế hàng loạt HTML được tạo.
Tệp table.html đã tải xuống trống khi mở trong trình duyệt. Tôi nên làm gì?
Tệp table.html đã tải xuống chỉ chứa cấu trúc thẻ `<table>` (có thể kèm theo `<div>` bao bọc đáp ứng) — không có khung HTML hoàn chỉnh (`<html>` / `<head>` / `<body>`). Nó được thiết kế như một đoạn mã để nhúng vào các trang web hiện có. Bạn có thể thêm khung HTML hoàn chỉnh theo cách thủ công bằng công cụ định dạng HTML, hoặc dán trực tiếp vào vị trí thích hợp trong trang dự án của bạn.
Trang bị lag khi tạo 1000+ dòng. Tôi nên làm gì?
Công cụ mặc định đặt giới hạn bảo vệ 1000 dòng, hiển thị "Đã cắt bớt" nếu vượt quá. Nếu thực sự cần bảng 5000 dòng, hãy tăng "Số dòng tối đa" trên thanh công cụ lên 10000, nhưng chúng tôi khuyến nghị: ① Chia thành bảng phân trang (50 dòng mỗi trang); ② Sử dụng IntersectionObserver để cuộn ảo; ③ Hoặc sử dụng các thư viện thành phần chuyên dụng như TanStack Table / AG Grid cho các tình huống hiển thị dữ liệu.
Dữ liệu có được tải lên máy chủ không? Quyền riêng tư có an toàn không?
Mọi thứ chạy cục bộ trong trình duyệt của bạn. Tất cả phân tích JSON, tạo HTML, sao chép và tải xuống đều diễn ra trong trình duyệt của bạn thông qua JavaScript, và việc đọc tệp chỉ xảy ra trong FileReader cục bộ. Không có gì được gửi đến bất kỳ máy chủ nào. Bạn có thể sử dụng công cụ này một cách an toàn với các phản hồi API nhạy cảm và các trường kinh doanh chưa phát hành — đóng trang sẽ xóa tất cả dữ liệu.
Xử lý sự cố
Thông báo: "Vui lòng nhập dữ liệu JSON" hoặc lỗi tương tự
Ô nhập bên trái trống hoặc chỉ chứa khoảng trắng. Đảm bảo bạn đã dán nội dung JSON hợp lệ, hoặc nhấp "Sample" để tải dữ liệu mẫu, hoặc nhấp "Upload" để chọn tệp .json / .txt.
Thông báo: "Unexpected token ... in JSON at position N"
Định dạng JSON không hợp lệ. Nguyên nhân phổ biến: ① Dấu phẩy thừa ở cuối (ví dụ: [{},{},]); ② Sử dụng dấu nháy đơn thay vì dấu nháy kép; ③ Cú pháp đối tượng JS (ví dụ: {key: value}) thay vì JSON ({"key": "value"}). Sử dụng công cụ định dạng JSON để xác thực và sửa chữa trước.
Bảng được tạo chỉ có tiêu đề, không có dòng dữ liệu
Dữ liệu JSON là một mảng trống [] hoặc đối tượng trống {}. Công cụ này trả về một chú thích `<!-- No valid objects found -->` cho các mảng trống. Thêm ít nhất một đối tượng dữ liệu vào JSON nguồn của bạn.
Tên cột quá dài ở chế độ Làm phẳng (ví dụ: user.profile.address.city.country.code)
Khi lồng nhau quá sâu, chúng tôi khuyên: ① Chuyển sang chế độ "Khóa cấp cao nhất" (chỉ lấy các trường cấp cao nhất, các đối tượng lồng nhau trở thành cột JSON đầy đủ); ② Cấu trúc lại JSON nguồn của bạn để giảm lồng nhau không cần thiết; ③ Sử dụng nút Reset trên thanh công cụ để khôi phục cấu hình làm phẳng mặc định.
Chèn lớp Tailwind không có hiệu lực
Công cụ mặc định xuất kiểu nội tuyến (padding, nền), ghi đè các lớp tiện ích cùng tên của Tailwind. Gợi ý: ① Tắt tùy chọn kiểu thanh công cụ tương ứng (chẳng hạn như sọc ngựa vằn) trước khi sử dụng Tailwind để kiểm soát màu nền; ② Hoặc sử dụng PostCSS để loại bỏ các thuộc tính kiểu nội tuyến khỏi HTML được tạo.
Chiều cao bảng bị nén bên trong bao bọc đáp ứng
"Bao bọc đáp ứng" làm cho chiều cao của div bên ngoài mặc định theo bảng. Nếu vùng chứa cha của bạn là bố cục flex mà không có chiều cao được chỉ định, bảng con có thể bị nén. Thêm min-h-0 vào vùng chứa cha hoặc đặt chiều cao bảng.
Tệp table.html đã tải xuống trống khi mở trong trình duyệt
Tệp đã tải xuống chỉ chứa đoạn mã <table> (có thể kèm theo <div> bao bọc đáp ứng), không có khung HTML hoàn chỉnh (<!doctype html> / <html> / <head> / <body>). Nó được thiết kế để dễ dàng nhúng vào các trang web hiện có. Sử dụng công cụ định dạng HTML để thêm khung hoàn chỉnh, hoặc dán trực tiếp vào vị trí thích hợp trong dự án của bạn.
Văn bản tiêu đề bảng tiếng Việt hiển thị ký tự lỗi
Các khóa trong JSON nguồn chứa tiếng Việt — đảm bảo tệp nguồn được mã hóa UTF-8. Nếu JSON được sao chép từ Excel, nó có thể đã được chuyển đổi sang GBK; sử dụng công cụ chuyển đổi mã hóa để chuyển sang UTF-8 trước khi dán.
Muốn sửa đổi hàng loạt bảng đã tạo (ví dụ: thay logo công ty / đổi màu)
Sau khi tạo, hãy sao chép HTML từ tab Code bên phải và sử dụng sed / PostCSS / tập lệnh tùy chỉnh để thay thế hàng loạt các thuộc tính kiểu. Một lệnh phổ biến: sed -i '' 's/#f9fafb/#your-color/g' table.html.
Trang bị lag khi tạo 1000+ dòng
Công cụ mặc định đặt giới hạn bảo vệ 1000 dòng. Bạn có thể điều chỉnh maxRows lên đến 10000 trên thanh công cụ, nhưng trình duyệt chịu sự sụt giảm hiệu suất đáng chú ý khi kết xuất DOM rất lớn (>1000 nút). Chúng tôi khuyên: ① Chia thành bảng phân trang (50 dòng mỗi trang); ② Sử dụng IntersectionObserver để cuộn ảo; ③ Hoặc sử dụng các thư viện thành phần chuyên dụng như TanStack Table / AG Grid cho các tình huống hiển thị dữ liệu.
Bản ghi lịch sử bị mất
Lịch sử được lưu trữ trong localStorage của trình duyệt. Xóa dữ liệu trình duyệt / chuyển sang chế độ ẩn danh / sử dụng trình duyệt khác sẽ khiến lịch sử bị mất. Công cụ không tải lịch sử lên bất kỳ máy chủ nào, vì vậy nó không thể đồng bộ hóa giữa các thiết bị.
Không thể thấy dữ liệu thô sau giới hạn dòng
Công cụ mặc định maxRows=1000, các dòng vượt quá sẽ bị cắt bớt. Nếu dữ liệu nguồn của bạn > 1000 dòng nhưng bạn chỉ cần N dòng đầu tiên để xem trước, hãy đặt maxRows nhỏ hơn (ví dụ: 100) để có kết quả nhanh hơn. Đối với toàn bộ dữ liệu, chúng tôi khuyên sử dụng trực tiếp các tập lệnh Python / Node.js.
Thuật ngữ
- Bảng HTML (HTML Table)
- Phần tử hiển thị dữ liệu có cấu trúc chuẩn W3C, bao gồm các thẻ ngữ nghĩa table / thead / tbody / tr / th / td / caption. Mã được tạo bởi công cụ này tuân thủ chặt chẽ cấu trúc này.
- Mảng JSON
- Tập hợp các đối tượng được bao bọc trong dấu ngoặc vuông [...]. Công cụ sử dụng mỗi đối tượng trong mảng làm một hàng của bảng; mảng trống không tạo bảng (hiển thị thông báo).
- Đối tượng JSON
- Tập hợp các cặp khóa-giá trị được bao bọc trong dấu ngoặc nhọn {}. Công cụ sử dụng mỗi khóa của đối tượng làm tiêu đề bảng và giá trị làm ô; một đối tượng đơn lẻ được tự động bao bọc thành bảng một hàng.
- Làm phẳng (Flatten)
- Mở rộng đệ quy các đối tượng lồng nhau thành các khóa phẳng phân cách bằng dấu chấm, ví dụ: {user:{name:'A'}} → 'user.name'. Công cụ hỗ trợ tự động làm phẳng 6 cấp với dấu phân cách có thể cấu hình.
- thead / tbody
- Hai phân vùng ngữ nghĩa của bảng HTML: thead bao bọc hàng tiêu đề (th), tbody bao bọc các hàng dữ liệu (td). Mã được tạo bởi công cụ phân biệt chặt chẽ hai phần này.
- Caption
- Thẻ tiêu đề bảng, nằm ở hàng đầu tiên bên trong bảng. Công cụ hỗ trợ văn bản chú thích tùy chỉnh; khi được bật, tiêu đề đã chỉ định sẽ hiển thị phía trên bảng, hữu ích cho SEO và khả năng truy cập.
- Sọc ngựa vằn (Zebra Striping)
- Mẫu trực quan trong đó các hàng lẻ và hàng chẵn luân phiên sử dụng các màu nền khác nhau, thường là kết hợp #fff / #f9fafb. Công cụ bật tính năng này thông qua hộp kiểm "Sọc ngựa vằn", cải thiện đáng kể khả năng đọc cho các bảng dài.
- Kiểu nội tuyến (Inline Style)
- Viết CSS trực tiếp thông qua thuộc tính style của thẻ HTML, thay vì tham chiếu đến biểu định kiểu bên ngoài. Công cụ mặc định xuất tất cả kiểu dưới dạng kiểu nội tuyến, vì vậy mã có thể được sử dụng ngay mà không cần tệp CSS bổ sung.
- Hook lớp CSS
- Khả năng khác biệt của công cụ: chèn bất kỳ chuỗi lớp nào (chẳng hạn như lớp Tailwind) vào thẻ `<table>`, tích hợp liền mạch với các khung CSS hiện có. Đây là bản nâng cấp quan trọng so với các đối thủ cạnh tranh.
- iframe sandbox
- Chế độ hộp cát bảo mật của thẻ HTML iframe, có thể hạn chế thực thi tập lệnh và gửi biểu mẫu. Công cụ sử dụng iframe với sandbox="allow-same-origin" để xem trước HTML được tạo, ngăn chặn việc thực thi tập lệnh ngoài ý muốn.
- Tô sáng theo loại
- Khả năng khác biệt của công cụ: áp dụng các màu khác nhau dựa trên loại JS của giá trị ô (null / boolean / number / object / string), giúp gỡ lỗi dữ liệu API trực quan hơn.
- Lịch sử localStorage
- Bộ lưu trữ khóa-giá trị cục bộ do trình duyệt cung cấp (dung lượng khoảng 5-10MB). Công cụ sử dụng localStorage để lưu giữ lâu dài 200 lần nhập gần nhất, có thể nhanh chóng khôi phục sau khi làm mới hoặc vô tình đóng tab.
- Bao bọc đáp ứng (Responsive Wrapper)
- Bao bọc bảng trong `<div style="overflow-x:auto;max-width:100%;">` bên ngoài, để bảng tự động nhận thanh cuộn ngang trên màn hình hẹp. Được bật theo mặc định, có thể tắt trên thanh công cụ.
- Debounce
- Kỹ thuật tối ưu hóa hiệu suất frontend: hợp nhất các cuộc gọi lại sự kiện tần suất cao (như đầu vào) thành một lần thực thi sau lần kích hoạt cuối cùng. Công cụ đặt debounce 500ms để tránh độ trễ khi phân tích tệp lớn.
- W3C HTML5
- Đặc tả tiêu chuẩn HTML được tạo bởi World Wide Web Consortium (W3C). Mã được tạo bởi công cụ tuân thủ đặc tả HTML5 và hiển thị chính xác trong tất cả các trình duyệt hiện đại.
So sánh ba chế độ xử lý lồng nhau
Thanh công cụ cung cấp ba chế độ cho các tình huống lồng nhau khác nhau. Chọn dựa trên độ phức tạp của cấu trúc JSON:
| Chế độ | Hành vi | Cột mẫu | Tình huống |
|---|---|---|---|
Làm phẳng (Khuyến nghị) | Mở rộng đệ quy các đối tượng lồng nhau thành các khóa phân cách bằng dấu chấm (độ sâu ≤ 6) | user.name / user.tags.0 | Cấu trúc lồng nhau API thực như GitHub / Stripe / Notion; bạn muốn mỗi trường trong cột riêng |
Khóa cấp cao nhất | Chỉ lấy các khóa cấp đầu tiên của đối tượng; đối tượng / mảng lồng nhau trở thành chuỗi JSON một cột | user / tags | Khi cấu trúc lồng nhau không ổn định hoặc quá sâu (>6 cấp); bạn chỉ quan tâm đến tổng quan trường cấp cao nhất |
Chuỗi | Buộc tất cả giá trị được xử lý thành chuỗi; đối tượng lồng nhau được JSON.stringify trực tiếp | user (dưới dạng blob JSON) | Tình huống gỡ lỗi: bảo toàn cấu trúc JSON gốc để kiểm tra trực quan |
Bảng tra cứu nhanh 14 tùy chọn cấu hình thanh công cụ
Tất cả 14 tùy chọn cấu hình trong thanh công cụ và sự khác biệt trực quan của chúng, để lựa chọn kết hợp nhanh chóng:
| Tùy chọn | Loại | Hiệu ứng trực quan / Hành vi |
|---|---|---|
includeIndex | checkbox | Thêm cột được đánh số # ở ngoài cùng bên trái (tăng dần từ 1) |
striped | checkbox | Luân phiên nền hàng lẻ/chẵn (trắng / #f9fafb) |
bordered | checkbox | Đường viền xám 1px xung quanh ô + đường nhấn mạnh 2px dưới tiêu đề |
hover | checkbox | Nền xám nhạt #f9fafb khi di chuột qua hàng |
compact | checkbox | Giảm padding ô từ 10px×14px xuống 6px×8px |
responsive | checkbox | Bao bọc trong vùng chứa overflow-x:auto; cuộn ngang trên màn hình hẹp |
flattenMode | select | Xử lý lồng nhau: Làm phẳng (Khuyến nghị) / Khóa cấp cao nhất / Chuỗi |
tableClass | text | Lớp CSS tùy chỉnh được chèn vào <table class="..."> |
nullPlaceholder | text | Văn bản hiển thị cho các ô null / undefined (trống sẽ hiển thị 'null') |
maxRows | number | Số dòng tạo tối đa (1-10000), tự động cắt bớt với thông báo khi vượt quá |
caption | text | Văn bản tiêu đề tùy chỉnh hiển thị phía trên bảng (caption-side: top) |
indexHeader | text | Văn bản tiêu đề cho cột chỉ mục (mặc định #) |
flattenSeparator | text | Dấu phân cách cho các khóa ở chế độ Làm phẳng (mặc định ., có thể đổi thành _ / - v.v.) |
wrapperClass | text | Lớp CSS tùy chỉnh cho <div> bao bọc đáp ứng (nâng cao) |
Bảng tra cứu nhanh quy tắc tô sáng ô theo loại
Công cụ tự động áp dụng các màu khác nhau dựa trên loại JavaScript của giá trị JSON để nhận dạng loại dữ liệu nhanh chóng:
| Loại JS | Phát hiện | Kiểu áp dụng | Đầu ra mẫu |
|---|---|---|---|
null / undefined | val === null || val === undefined | color: #9ca3af; font-style: italic; hiển thị văn bản giữ chỗ (có thể tùy chỉnh) | <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 (chế độ Làm phẳng) | type === 'object' + chế độ Làm phẳng trích theo đường dẫn | Các đối tượng lồng nhau được trích theo đường dẫn thành giá trị nguyên tử | user.name → 'Alice' |
object / array (chế độ khác) | typeof val === 'object' | JSON.stringify sau đó thoát và cắt bớt ở 50 ký tự, màu tím in nghiêng + title di chuột hiển thị toàn bộ JSON | <span style="color:#7c3aed;font-style:italic;" title="...">{"id":1…</span> |
string | trường hợp khác | Màu văn bản mặc định #4b5563 | Jennifer Martinez |
Privacy & Security
Công cụ JSON sang HTML này chạy tất cả phân tích JSON, làm phẳng lồng nhau, tạo HTML, sao chép và tải xuống hoàn toàn trong trình duyệt của bạn thông qua JavaScript. Dữ liệu JSON đầu vào và mã HTML được tạo không được tải lên bất kỳ máy chủ nào, cũng không được ghi lại, lưu vào bộ nhớ đệm hoặc lưu trữ trên đám mây. Bạn có thể sử dụng công cụ này một cách an toàn với các phản hồi API nhạy cảm chưa phát hành và các trường kinh doanh nội bộ — đóng trang sẽ xóa tất cả dữ liệu.
Authoritative References
- Nén JSON
- CSV sang JSON
- JSON sang CSV
- JSON Diff
- JSON Escape / Unescape
- Làm phẳng JSON
- Trình định dạng JSON
- Trinh tao JSON
- Truy vấn JSONPath
- Gộp JSON
- Sửa JSON
- Trình Xác Thực JSON Schema
- Sắp xếp JSON
- JSON Stringify
- JSON sang HTML
- JSON sang Java
- JSON sang Markdown
- JSON sang SQL
- JSON sang TOML
- JSON sang TypeScript
- XML sang JSON
- Chuyen JSON sang XML
- YAML sang JSON
- JSON → YAML
- JSON sang Go
- JSON sang Rust
- JSON sang Swift
- JSON sang C#
- JSON sang C++
- JSON sang PHP
- JSON sang Python