JSON

JSON Path Extractor / Flatten

Làm phẳng (Flatten) JSON lồng nhau thành danh sách phẳng "đường dẫn: giá trị" và dựng lại thành cấu trúc lồng nhau (Unflatten). Ký hiệu đường dẫn giống với JSONPath/JSON Diff: store.book[0].price.

Deeply nested JSON is hard to compare or iterate over programmatically. Flatten unrolls such a structure into a flat list of "path: value" pairs (e.g. store.book[0].price: 12.99), and Unflatten rebuilds it.

How to use it

Common uses

Things to keep in mind

Array index notation varies between libraries — this tool uses items[0], though some write items.0 without brackets.

Unflatten requires that paths don't conflict with each other (e.g. one and one.two at the same time) — otherwise the structure can't be unambiguously rebuilt.

Bài viết về công cụ này: JSON Flatten: biến cấu trúc lồng nhau thành danh sách phẳng

Câu hỏi thường gặp

"Làm phẳng" (flatten) một object JSON thực chất làm gì?

Nó chuyển các object và mảng lồng nhau thành một object một cấp với khóa ký hiệu dấu chấm hoặc ngoặc vuông (như user.address.city hay items[0].id), giúp dữ liệu lồng sâu dễ đọc hơn dưới dạng bảng phẳng hoặc nhập vào công cụ bảng tính.

JSON đã làm phẳng có thể chuyển ngược lại dạng lồng ban đầu không?

Có, miễn là ký hiệu khóa nhất quán — đảo ngược quá trình sẽ tái tạo cấu trúc lồng ban đầu bằng cách tách từng đường dẫn khóa trở lại thành object và mảng.

Làm phẳng có làm mất thông tin nào từ JSON gốc không?

Không. Mọi giá trị đều được giữ nguyên; chỉ cấu trúc thay đổi, vì mỗi đường dẫn lồng duy nhất trở thành khóa phẳng riêng của nó.

Điều gì xảy ra nếu khóa thực tế tự nó chứa dấu chấm?

Đây là tình huống mơ hồ: đường dẫn user.name có thể có nghĩa là object lồng nhau {"user": {"name": ...}}, hoặc là khóa phẳng {"user.name": ...}. Ký hiệu dấu chấm không phân biệt được hai trường hợp này, nên nên tránh dùng khóa như vậy hoặc xử lý riêng.

Định dạng đường dẫn có giống nhau ở mọi công cụ tương tự không?

Không. Ký hiệu dấu chấm cho object (user.name) khá phổ biến ở hầu hết mọi nơi, nhưng cách ký hiệu chỉ số mảng lại khác nhau: ở đây dùng items[0], trong khi một số thư viện khác viết items.0 không có ngoặc.

Bài viết: JSON

JSON Formatter: định dạng, thu gọn và xác thực

Định dạng để dễ đọc, thu gọn để giảm dung lượng, xác thực để đảm bảo đúng — ba việc khác nhau với JSON.

JSONPath: truy vấn dữ liệu JSON mà không cần phân tích thủ công

JSONPath giúp lấy ra giá trị cần thiết từ một JSON lớn chỉ bằng một biểu thức thay vì duyệt thủ công như thế nào.

JSON Diff: so sánh cấu trúc khác gì so sánh văn bản

Vì sao thứ tự khóa không nên ảnh hưởng đến việc so sánh hai tài liệu JSON.

JSON Schema: cách mô tả và xác thực cấu trúc của JSON

JSON Schema giúp tự động kiểm tra xem dữ liệu có khớp với hợp đồng mong đợi hay không như thế nào.

JSON Sort Keys: vì sao cần sắp xếp khóa của object

Vì sao thứ tự khóa JSON không được quy định, nhưng sắp xếp vẫn hữu ích trong thực tế.

JSON Repair: vì sao JSON bị hỏng và cách sửa

Nguyên nhân phổ biến khiến JSON "hỏng" và những gì sửa tự động có thể và không thể khắc phục.

Mock JSON Generator: dữ liệu giả dùng để làm gì

Dữ liệu giả giúp bắt đầu xây dựng giao diện trước khi backend sẵn sàng như thế nào.

JSON ↔ YAML/CSV/XML/TOML: khi nào và vì sao cần chuyển đổi

Dữ liệu nào bị mất khi chuyển JSON sang CSV, và vì sao YAML cùng TOML phổ biến cho tệp cấu hình.