Công cụ này làm gì
Dán JSON vào, viết một filter jq, rồi chạy nó — hoàn toàn ngay trong trình duyệt của bạn. Một module WebAssembly được biên dịch từ jaq, một bản viết lại ngôn ngữ jq hoàn toàn bằng Rust, biên dịch và chạy filter của bạn ngay trên thiết bị của bạn. Không có gì được tải lên để làm việc này: JSON và filter của bạn không bao giờ rời khỏi tab trình duyệt.
Cách sử dụng
Dán JSON của bạn vào ô nhập liệu, hoặc nạp từ một file. Gõ một filter jq vào ô filter — hoặc nhấp vào một trong các nút ví dụ để bắt đầu từ một filter đã chạy được — rồi nhấp Chạy. Mỗi giá trị filter của bạn tạo ra sẽ hiện thành một kết quả riêng bên dưới, theo đúng thứ tự filter trả về; sao chép một kết quả bất kỳ hoặc toàn bộ đầu ra khi bạn đã hài lòng.
Sổ tay công thức jq
Filter jq đọc từ trái sang phải, và ký tự pipe | nối đầu ra của filter này thành đầu vào của filter tiếp theo. Một vài mẫu quen thuộc đã đủ dùng cho phần lớn nhu cầu thường ngày:
.
Filter identity — trả về đầu vào y nguyên, không đổi gì cả. Hữu ích để kiểm tra JSON của bạn đã được parse đúng như mong đợi trước khi viết gì phức tạp hơn.
.foo
Truy cập trường — lấy giá trị của khóa foo ra khỏi một object. Nối thêm để đi sâu hơn, ví dụ .foo.bar.
.[] | .name
Duyệt mảng rồi truy cập trường — .[] phát ra lần lượt từng phần tử của một mảng (hoặc từng giá trị của một object), và pipe đưa mỗi phần tử đó vào .name, tạo ra một kết quả cho mỗi phần tử có khóa đó.
map(.x)
Dựng một mảng mới bằng cách áp dụng .x lên từng phần tử của mảng đầu vào — phiên bản giữ nguyên cấu trúc mảng của .[] | .x.
keys
Trả về một mảng chứa các khóa của một object, đã sắp theo thứ tự bảng chữ cái — tiện để xem nhanh cấu trúc của một tài liệu bạn chưa quen.
.[] | select(.age > 30)
Duyệt mảng rồi chỉ giữ lại những phần tử thỏa điều kiện — select cho một giá trị đi qua nguyên vẹn nếu điều kiện đúng và loại bỏ nếu sai, đây chính là cách bạn lọc một mảng object xuống còn những phần tử mình cần.
now
Thời gian hiện tại dạng Unix timestamp tính bằng giây, được tab trình duyệt của bạn cung cấp nên luôn khớp với đồng hồ máy bạn thay vì phụ thuộc vào một server.
Ngữ nghĩa số: jq dùng số thực 64-bit, giống bản gốc
Công cụ này xử lý số giống hệt jq CLI thật, và điều đó khác với công cụ Định dạng trên trang này. Một khi một con số đi qua filter jq, nó được biểu diễn dưới dạng số thực dấu phẩy động 64-bit — cùng cách JavaScript biểu diễn số — nên một số nguyên khổng lồ có thể trả về hơi khác so với lúc vào, đúng như jq bản gốc sẽ xử lý. Đó là hành vi bình thường của jq chứ không phải lỗi của công cụ này, và nó chỉ ảnh hưởng tới những số vượt khoảng mười bảy chữ số có nghĩa; các giá trị thường ngày không bị ảnh hưởng.
Nếu bạn cần giữ một con số đúng y như đã viết — chẳng hạn định dạng một tài liệu chứa một ID rất lớn hoặc một số thập phân dài mà không muốn động vào bất kỳ chữ số nào — hãy dùng công cụ Định dạng JSON thay vì công cụ này. Nó parse bằng Rust ở chế độ giữ nguyên phần chữ số gốc của từng con số, đó là lý do nó giữ chính xác từng byte, trong khi một công cụ truy vấn và biến đổi như công cụ này, do bản chất công việc, thì không.
Giới hạn
JSON đầu vào bị giới hạn ở mức 10 MB, và mỗi lần chạy bị giới hạn tối đa 10.000 giá trị đầu ra. Cả hai giới hạn đều dừng việc chạy ngay từ đầu kèm thông báo rõ ràng, thay vì để tab trình duyệt của bạn bị treo khi cố xử lý hoặc hiển thị nhiều hơn mức nó xử lý nổi.
Bước tiếp theo
Nếu điều bạn thực sự cần là dọn dẹp, kiểm tra hoặc nén một tài liệu JSON thay vì truy vấn hay biến đổi nó — nhất là một tài liệu chứa những con số rất lớn mà bạn không muốn bị thay đổi — công cụ Định dạng JSON làm đúng việc đó và giữ nguyên từng chữ số như bạn đã viết.