JSON sang Markdown
Công cụ chuyển đổi JSON sang Markdown trực tuyến miễn phí. Chuyển đổi mảng JSON hoặc đối tượng lồng chỉ với một cú nhấp thành mã bảng GFM Markdown sẵn sàng cho GitHub README, tài liệu kỹ thuật và blog. 4 chế độ xử lý lồng, độ sâu flatten có thể điều chỉnh (1-6), dấu phân cách tùy chỉnh, làm đẹp khóa (user_name → User Name), sắp xếp cột, chia bảng thông minh, trình giữ chỗ null thông minh, căn chỉnh, xem trước 9 tùy chọn trực tiếp. Hoàn toàn cục bộ trong trình duyệt.
Đề xuất Liên quan
Về chuyển đổi JSON sang Markdown và bảng Markdown
Công cụ JSON sang Markdown tự động chuyển đổi cấu trúc dữ liệu JSON thành mã bảng GFM tiêu chuẩn. Nó giải phóng nhà phát triển khỏi việc viết thủ công dấu phân cách `|` / `-` và đặc biệt hữu ích để nhanh chóng hiển thị dữ liệu lồng từ API, tệp cấu hình dưới dạng tài liệu kỹ thuật, README và blog.
Bảng Markdown là biểu diễn bảng văn bản thuần do John Gruber đề xuất năm 2004: `|` phân tách ô, `-` xác định hàng phân cách tiêu đề, `:` tùy chọn kiểm soát căn chỉnh. GFM mở rộng Markdown tiêu chuẩn và được hỗ trợ nguyên bản bởi GitHub, GitLab, Notion, Confluence, Slack, Discord, VS Code. Mã do công cụ này tạo ra tuân thủ nghiêm ngặt GFM.
Công cụ JSON sang Markdown trên thị trường chia làm ba loại: 1) Chỉ tạo chuỗi mã Markdown; 2) Cung cấp cấu hình nâng cao (flatten sâu/làm đẹp khóa/chia bảng) — công cụ này là đại diện; 3) Hỗ trợ phân tích ngược Markdown (Markdown → JSON).
'Flatten lồng + làm đẹp khóa' là điểm khác biệt chính: công cụ truyền thống hiển thị `{user:{name:'Alice'}}` dưới dạng chuỗi, còn công cụ này mở rộng đệ quy thành cột `user.name` (tối đa 6 cấp, dấu phân cách có thể cấu hình) và chuyển `user_name`/`userProfileId` thành `User Name`/`User Profile Id`.
'Chia bảng thông minh' là một điểm khác biệt khác: khi có nhiều trường mảng cấp cao nhất (`{users:[...], orders:[...]}`), công cụ tự động tạo bảng độc lập với tiêu đề `### TênTrường` (H3).
Ưu điểm lớn nhất của Markdown so với HTML là 'văn bản thuần cho kiểm soát phiên bản': git diff hiển thị rõ thay đổi hàng bảng trong .md, không giống thẻ HTML `<tr>` `<td>` khó đọc trong công cụ diff.
Trường hợp sử dụng
- Tạo tài liệu kỹ thuật — chuyển đổi dữ liệu JSON từ API thành bảng Markdown để hiển thị
- GitHub README — hiển thị dữ liệu cấu hình, mô tả tham số, ví dụ phản hồi API
- Báo cáo dữ liệu — trình bày kết quả phân tích trong bảng Markdown (xuất sang Notion/Confluence)
- Tài liệu API (Swagger/Redoc/OpenAPI) — hiển thị rõ cấu trúc dữ liệu
- Phần tài liệu cho trình tạo trang tĩnh (VuePress/Docusaurus/Hexo)
- Chia sẻ dữ liệu có cấu trúc trong Slack/Discord/tin nhắn doanh nghiệp
- Xem trước bảng trong VS Code/JetBrains IDE Markdown Preview
- Cộng tác kiểm soát phiên bản: bảng Markdown là văn bản thuần, thân thiện với git diff
- Giáo dục: chuyển bài tập JSON lồng của sinh viên thành bảng thống nhất để chấm điểm
- Mẫu email (ứng dụng email hỗ trợ Markdown: Bear Mail, HEY)
- Nhập vào Notion: tạo bảng Markdown → dán vào Notion
- Quốc tế hóa: cấu trúc chung cho tài liệu sau khi flatten + Beautify keys
Cách Sử dụng
- Dán mảng JSON (khuyên dùng) hoặc đối tượng lồng vào trình soạn thảo bên trái, hoặc nhấp 'Sample' để tải mẫu, hoặc 'Upload' để tải tệp .json/.txt lên
- Chọn chế độ xử lý lồng trên thanh công cụ (khuyên dùng 'Flatten'), nếu lồng sâu thì tăng Max Depth
- Nếu cần dấu phân cách tùy chỉnh, nhập vào trường Separator (mặc định `.`, có thể đổi thành `_` / `-` / `/`)
- Chọn Strategy: mảng đơn giản dùng 'Single', nhiều mảng dùng 'Multi' tự động chia, buộc chia dùng 'Split'
- Chọn tùy chọn kiểu: Sort columns, Beautify keys, Exclude empty, Include Caption, Include Index
- Chọn căn chỉnh: trái / giữa / phải
- Nhấp 'Convert' (hoặc nhấn Enter) để kích hoạt chuyển đổi — có bảo vệ debounce 500ms khi nhập
- Xem mã bảng Markdown đã tạo ở bên phải, nếu hài lòng nhấp 'Copy' để sao chép và dán vào tài liệu Markdown, hoặc 'Download' để tải xuống dưới dạng table.md
Tính năng
- Tự động flatten đối tượng lồng: mở rộng đệ quy `{user:{name,age}}` thành `user.name`, `user.age` với ký hiệu dấu chấm (độ sâu 1-6), không cần viết script flatten thủ công
- 4 chế độ xử lý lồng: Flatten (khuyên dùng, độ sâu điều chỉnh được) / First Key (đối tượng lồng dưới dạng JSON cột đơn) / Stringify (đối tượng lồng thành chuỗi JSON) / Raw JSON (mỗi dòng là khối JSON hoàn chỉnh)
- Chia bảng thông minh: nhận diện trường mảng cấp cao nhất (`users`, `orders`), tự động chia thành các bảng Markdown độc lập với tiêu đề ###, lý tưởng cho dữ liệu nghiệp vụ phức tạp
- Dấu phân cách tùy chỉnh: mặc định `.` (tương thích Lodash/MongoDB), có thể đổi thành `_` / `-` / `/` trên thanh công cụ
- Làm đẹp tên khóa (camelCase/snake_case → Title Case): `user_name` → `User Name`, `userProfileId` → `User Profile Id` — tiêu đề trở nên dễ đọc cho con người
- Công tắc sắp xếp cột: sắp xếp tất cả cột tiêu đề theo thứ tự bảng chữ cái chỉ với một cú nhấp, giữ thứ tự cột ổn định khi so sánh tài liệu
- Loại trừ cột trống: tự động phát hiện và loại trừ cột có tất cả hàng là null/undefined/chuỗi rỗng
- 3 chế độ căn chỉnh: trái (`:-`) / giữa (`:-:`) / phải (`-:`), chuyển đổi bằng nút radio, tuân thủ GFM
- Công tắc cột chỉ mục hàng: tùy chọn thêm cột `#` ở ngoài cùng bên trái (văn bản tiêu đề có thể tùy chỉnh)
- Công tắc tiêu đề Caption: tự động tạo `### TênDữLiệu` tiêu đề cấp ba (H3) phía trên mỗi bảng, cấu trúc tài liệu rõ ràng, hỗ trợ SEO
- Thoát nhận biết kiểu: `|` / `\` / ký tự xuống dòng trong ô được tự động thoát thành `\|` / `\\` / `<br>`
- Phản hồi thống kê tạo: thanh trạng thái dưới cùng hiển thị trực tiếp 'Đã tạo N bảng × M hàng × K cột' + số byte
- Dữ liệu mẫu + tải tệp lên: 3 mẫu người dùng lồng tích hợp tải bằng một cú nhấp, hỗ trợ kéo thả hoặc tải lên .json/.txt
- Xử lý hoàn toàn cục bộ trong trình duyệt: tất cả phân tích, flatten, tạo Markdown, sao chép/tải xuống đều hoàn tất trong trình duyệt, dữ liệu không tải lên máy chủ
Ví dụ mã
JavaScript: fetch + flatten lồng + đầu ra Markdown
javascriptCách dùng phổ biến nhất: sau khi gọi GitHub API, flatten đối tượng lồng thành ký hiệu dấu chấm, dùng công cụ này tạo bảng Markdown.
// 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 flatten lồng (tương đương logic Flatten của công cụ)
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;
}
// ... [truncated]Python: tạo báo cáo Markdown trên backend Flask
pythonTổng hợp dữ liệu đa nguồn trên backend, tạo bảng Markdown bằng Python (không phụ thuộc frontend).
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
# ... [truncated]Dòng lệnh: jq tổng hợp + công cụ này tạo GitHub Release Notes
bashKịch bản vận hành: lấy danh sách PR từ GitHub API, tổng hợp và flatten qua jq, dán vào công cụ để tạo GFM Release Notes.
# 1) Lấy 50 PR đã merge qua gh CLI
PR_JSON=$(gh pr list --state merged --limit 50 --json number,title,author,labels,mergedAt)
# 2) Flatten mảng labels lồng qua jq
echo "$PR_JSON" | jq 'map({number,title,author:.author.login,labels:(.labels|map(.name)|join(", ")),mergedAt})' > prs.json
# 3) Mở công cụ, dán nội dung, Strategy: Single, chọn Sort columns + Include Index
# 4) Tạo Release
gh release create v2.1.0 -F RELEASE.md -t "v2.1.0"Câu hỏi Thường gặp
Làm thế nào để chuyển đổi dữ liệu JSON thành bảng Markdown?
Dán mảng JSON (mỗi phần tử là một đối tượng) hoặc đối tượng đơn vào hộp nhập bên trái, nhấp nút 'Convert' trên thanh công cụ — bên phải sẽ tự động tạo mã bảng Markdown tiêu chuẩn GFM. Mã có thể dán trực tiếp vào GitHub README, blog Markdown, trang Confluence hoặc tài liệu Notion.
Đối tượng JSON lồng có thể chuyển thành bảng Markdown không?
Có. Công cụ có 4 chế độ xử lý lồng cho các tình huống khác nhau: ① Flatten (khuyên dùng): mở rộng đệ quy `{user:{name:'Alice',age:30}}` thành các cột `user.name`, `user.age`, độ sâu 1-6; ② First Key: chỉ lấy trường cấp cao nhất, đối tượng lồng dưới dạng chuỗi JSON một cột; ③ Stringify: tất cả đối tượng lồng thành chuỗi JSON; ④ Raw JSON: mỗi hàng là một khối JSON hoàn chỉnh (phù hợp hiển thị đoạn mã).
Có thể thay đổi dấu phân cách khóa sau khi flatten không?
Mặc định dùng `.` (tương thích JavaScript/MongoDB/Lodash). Để dùng `user_name` (snake_case) hoặc `user/name` (kiểu đường dẫn), thay đổi trong trường 'Separator' trên thanh công cụ (tối đa 3 ký tự).
Làm đẹp khóa (Beautify keys) là gì?
Khi chọn 'Beautify keys', `user_name`, `userProfileId` tự động chuyển thành `User Name`, `User Profile Id` (Title Case). Triển khai bên trong: dấu gạch dưới/gạch ngang thành khoảng trắng, chèn khoảng trắng trước chữ hoa camelCase, viết hoa chữ cái đầu mỗi từ. Điều này làm tiêu đề dễ đọc hơn, đặc biệt hữu ích trong README và tài liệu API.
Làm thế nào để chia thành nhiều bảng?
Trình đơn thả xuống 'Strategy': ① Single (mặc định) — toàn bộ JSON thành một bảng; ② Multi — khi JSON là đối tượng chứa nhiều trường mảng, mỗi mảng tự động chia thành bảng độc lập với tiêu đề ###; ③ Split — buộc chia, chỉ xử lý trường mảng, bỏ qua các trường khác.
Bảng Markdown tạo ra có dùng trực tiếp trên GitHub được không?
Có. Bảng do công cụ tạo ra tuân thủ CommonMark và GFM, hoạt động trong GitHub README, GitLab, Notion, VuePress/Docusaurus/Hexo, Slack/Discord, VS Code Markdown Preview — mọi nền tảng hỗ trợ GFM.
Có hỗ trợ tạo hàng loạt nhiều bảng Markdown không?
Có. Chuyển Strategy sang 'Multi' hoặc 'Split' — công cụ sẽ nhận diện mảng cấp cao nhất (`users`/`products`/`orders`) và tạo bảng độc lập cho mỗi mảng với tiêu đề `### TênTrường`.
Làm thế nào để kiểm soát thứ tự tiêu đề?
Mặc định dùng thứ tự xuất hiện đầu tiên của khóa. Để sắp xếp theo bảng chữ cái, chọn 'Sort columns'. Để có thứ tự tùy chỉnh hoàn toàn, dùng tính năng 'Column order' (sắp ra mắt).
Quá nhiều cột trống thì phải làm sao?
Chọn 'Exclude empty' — công cụ sẽ tự động loại trừ cột có tất cả hàng là null/undefined/rỗng. Đặc biệt hữu ích cho dữ liệu thưa.
Ký tự | trong ô có làm hỏng bảng không?
Không. Công cụ tự động thoát `|` → `\|`, `\` → `\\`, xuống dòng → `<br>`, đảm bảo bảng Markdown không bị lệch trên mọi trình kết xuất. Đây là ưu điểm chính so với đối thủ — hầu hết công cụ cạnh tranh không thoát, khiến bảng chứa `|` bị hỏng sau khi sao chép.
Sự khác biệt giữa bảng Markdown và bảng HTML?
Bảng Markdown là văn bản thuần (cú pháp `|` `-`), phù hợp cho tài liệu kỹ thuật, README, blog, cộng tác kiểm soát phiên bản; bảng HTML là định dạng trang web có kiểu (thẻ `<table>` `<tr>`), phù hợp cho trang frontend cần CSS, bố cục đáp ứng và nhãn ARIA. Với tài liệu kỹ thuật dùng công cụ này, với trang web dùng JSON sang HTML.
Giới hạn số hàng tối đa của bảng Markdown?
Không có giới hạn trên. Khuyến nghị: >1000 hàng — chia thành nhiều bảng; trong GitHub README tệp không quá 1MB; tuân thủ giới hạn của Notion/Confluence.
Làm thế nào để tùy chỉnh tiêu đề Caption?
Trong chế độ 'Multi/Split', Caption tự động lấy từ tên trường mảng cấp cao nhất (`### users`, `### orders`). Trong chế độ 'Single', chọn 'Include Caption' và nhập văn bản tùy chỉnh.
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?
Hoàn toàn cục bộ trong trình duyệt. Tất cả phân tích, flatten, tạo đều qua JavaScript, tệp chỉ được đọc bởi FileReader cục bộ. Dữ liệu không gửi đến máy chủ. Đóng trang sẽ xóa tất cả dữ liệu.
Xử lý sự cố
'Vui lòng nhập dữ liệu JSON' hoặc lỗi tương tự
Hộp nhập bên trái trống. Đảm bảo đã dán JSON hợp lệ hoặc dùng 'Sample'/'Upload'.
Lỗi 'Unexpected token ... in JSON at position N'
JSON không hợp lệ. Nguyên nhân: dấu phẩy thừa cuối, dùng nháy đơn thay nháy kép, cú pháp đối tượng JS. Sửa bằng JSON Formatter.
Bảng chỉ có tiêu đề không có hàng dữ liệu
JSON là mảng rỗng [] hoặc đối tượng rỗng {}. Thêm ít nhất một đối tượng.
Tên cột quá dài khi flatten
Giảm Max Depth (từ 6 xuống 3-4), chuyển sang 'First Key' hoặc đơn giản hóa cấu trúc JSON nguồn.
Chế độ Multi không tạo nhiều bảng
Đảm bảo JSON nguồn là đối tượng chứa trường mảng. Nếu tất cả trường là chuỗi/số/đối tượng, Multi sẽ quay về Single.
Sau Beautify keys tiêu đề trống
Chức năng không thay đổi khóa bắt đầu bằng chữ hoa hoặc ký tự đặc biệt (__proto__, constructor). Đổi tên trong JSON nguồn.
Bảng trống khi hiển thị trên GitHub
Nguyên nhân: ký tự | chưa thoát, thẻ HTML, mã hóa không phải UTF-8.
Tệp table.md tải về trống trong trình soạn thảo
Tệp chỉ chứa mã bảng (bắt đầu bằng |), không có tiêu đề tài liệu. Thêm # TiêuĐề thủ công.
Tiêu đề tiếng Trung hiển thị lỗi
Đảm bảo JSON nguồn mã hóa UTF-8. Dữ liệu từ Excel có thể mã hóa khác.
Muốn sửa hàng loạt bảng đã tạo
Sao chép Markdown và dùng sed/script thay thế. Markdown không hỗ trợ màu, nếu cần màu dùng JSON sang HTML.
Sau khi Exclude empty bảng rộng hơn
Chỉ loại trừ cột có TẤT CẢ hàng trống. Nếu một hàng có giá trị, cột vẫn giữ.
Lịch sử bị mất
Lịch sử lưu trong localStorage trình duyệt. Mất khi xóa dữ liệu/chế độ ẩn danh/đổi trình duyệt.
Thuật ngữ
- Bảng Markdown
- Bảng văn bản thuần từ ký tự | và -, được định nghĩa bởi đặc tả GFM. Mã công cụ tuân thủ nghiêm ngặt cú pháp này.
- GFM
- GitHub Flavored Markdown — phương ngữ mở rộng của GitHub trên Markdown tiêu chuẩn, bao gồm bảng, gạch ngang, danh sách nhiệm vụ, liên kết tự động.
- CommonMark
- Đặc tả tiêu chuẩn hóa của cú pháp Markdown (2014). Cú pháp bảng GFM mở rộng CommonMark.
- Mảng JSON
- Tập hợp đối tượng trong ngoặc vuông [...]. Mỗi đối tượng trở thành một hàng bảng. Mảng rỗng không tạo bảng.
- Đối tượng JSON
- Tập hợp cặp khóa-giá trị trong ngoặc nhọn {}. Khóa trở thành tiêu đề, giá trị trở thành ô.
- Flatten lồng
- Mở rộng đệ quy đối tượng lồng thành tên khóa phẳng phân tách bằng dấu chấm. Hỗ trợ độ sâu 1-6, dấu phân cách có thể cấu hình.
- Làm đẹp khóa (Beautify Keys)
- Chuyển đổi snake_case/camelCase thành Title Case: user_name → User Name.
- Chia bảng thông minh
- Nhận diện trường mảng cấp cao nhất và tự động tạo bảng độc lập với tiêu đề ###.
- Cú pháp căn chỉnh
- Hàng phân cách GFM hỗ trợ điều khiển căn chỉnh qua :: :- trái, :-: giữa, -: phải.
- Cột chỉ mục hàng
- Cột đánh số # ở ngoài cùng bên trái (bắt đầu từ 1), tiêu đề có thể tùy chỉnh.
- Caption
- Tiêu đề H3 (###) trong Markdown, tự động thêm phía trên mỗi bảng.
- Sắp xếp cột
- Sắp xếp tất cả cột theo bảng chữ cái.
- Loại trừ cột trống
- Tự động loại trừ cột có tất cả hàng là null/undefined/rỗng.
- Thoát Markdown (Escape)
- Chuyển đổi ký tự đặc biệt (|, \, xuống dòng) thành dạng an toàn (\|, \\, <br>).
- Lịch sử cục bộ (localStorage)
- Kho lưu trữ khóa-giá trị cục bộ của trình duyệt (~5-10MB).
- Debounce
- Kỹ thuật tối ưu hóa: gộp sự kiện tần suất cao thành một lần thực thi. Độ trễ 500ms.
Privacy & Security
Tất cả thao tác phân tích JSON, flatten lồng, tạo Markdown, sao chép và tải xuống trong công cụ này đều được thực hiện hoàn toàn cục bộ trong trình duyệt qua JavaScript. Dữ liệu JSON đầu vào và mã Markdown được tạo không được tải lên máy chủ, không được ghi lại, lưu đệm hoặc lưu trữ đám mây. Đó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