Ranh giới chuyển đổi JSON ↔ YAML và XML
Tuyên bố rằng JSON là tập con của YAML chỉ đảm bảo một chiều, còn XML hoàn toàn không có ánh xạ JSON chính thức — mọi thứ đều dựa trên quy ước.
Chuyển đổi giữa JSON với YAML, XML, CSV, TypeScript, Java, Go và SQL chưa bao giờ là không mất mát. Điều quan trọng là nói rõ mất mát xảy ra ở đâu.
8 bài viếtTuyên bố rằng JSON là tập con của YAML chỉ đảm bảo một chiều, còn XML hoàn toàn không có ánh xạ JSON chính thức — mọi thứ đều dựa trên quy ước.
CSV là hai chiều, còn JSON có dạng cây. Phần khó của chuyển đổi không nằm ở mã — mà ở việc quyết định trước xem mảng được làm phẳng thế nào và kiểu được giữ lại ra sao.
Cấu trúc lồng nhau, trường không đồng nhất và mảng của mảng là những chỗ chuyển JSON sang bảng tính bị vỡ. Bốn cách tiếp cận xếp theo thời gian ra kết quả, mỗi cách đều có đánh đổi.
Việc biến JSON thành SQL INSERT che giấu việc tách bảng lồng nhau, NULL so với thiếu trường, escaping và khác biệt dialect. Câu lệnh chạy được và bảng so sánh cho từng bẫy.
Sinh interface từ JSON mẫu chỉ là nửa việc: trường tùy chọn, null, union, ngày tháng và số nguyên lớn cần con người xem lại, và kiểu không hề kiểm chứng runtime.
Lệnh bị chép lại nhiều nhất trong mọi tutorial, yq -P input.json > output.yaml, trên yq v4 vẫn xuất ra JSON. Bài này đo yq v4.44.6, PyYAML 6.0.3 và js-yaml trên mẫu 2.39 MB, giải thích vì sao phần mở rộng đầu vào quyết định định dạng đầu ra, và đưa ra cách viết đúng cho chuyển đổi hàng loạt, dấu ngoặc, thụt lề và độ chính xác số nguyên lớn.
Chín thí nghiệm trên một bộ chuyển đổi thật: chiến lược "khóa của dòng đầu tiên" mất trường trong im lặng, null, vắng mặt và chuỗi rỗng đều thành ô trống, số nguyên 20 chữ số mất độ chính xác ngay ở JSON.parse, và dấu chấm trong khóa khiến hai đường dẫn khác nhau va chạm trong cùng một cột. Header được xây thế nào, giá trị nào bị bóp méo và cách chọn chiến lược theo mục đích phía sau.
Cái nhìn thực tế về thứ một bộ tạo JSON-to-Java thực sự xuất ra — số trở thành Double, đối tượng lồng nhau thành class nội bộ static, và không sinh ra một annotation Jackson nào. Độ chính xác tiền tệ, đổi tên trường, xoá kiểu, trường lạ và ngày tháng là năm thứ bạn phải tự bổ sung, mỗi thứ kèm code chép được ngay.