Công cụ này làm gì
JSONPath là ngôn ngữ truy vấn cho JSON, tương tự XPath đối với XML. Một truy vấn như $.store.book[*].title đi sâu vào tài liệu và chọn ra các giá trị bạn cần. Công cụ này chạy biểu thức JSONPath trên JSON bạn dán vào và liệt kê mọi kết quả khớp dưới dạng mảng JSON: các giá trị tìm được, đường dẫn chuẩn hóa của chúng (ví dụ $['store']['book'][0]['title']), hoặc cả hai.
Công cụ tuân theo RFC 9535, tiêu chuẩn IETF công bố năm 2024, nên kết quả giống với các thư viện hiện đại trong JavaScript, Java, Python, Go và các ngôn ngữ khác. Hãy dùng nó để thử truy vấn trước khi đưa vào mã, tìm hiểu vì sao bộ lọc không trả về gì, hoặc lấy vài trường từ một phản hồi API lớn.
Cách dùng
- Dán JSON vào ô JSON, tải lên tệp
.json, hoặc bấm Mẫu để nạp tài liệu hiệu sách kinh điển. - Gõ truy vấn vào Biểu thức JSONPath. Kết quả khớp cập nhật ngay khi bạn gõ.
- Chọn Hiển thị: giá trị, đường dẫn hoặc cặp đường dẫn/giá trị.
- Sao chép hoặc tải kết quả. Nếu truy vấn sai cú pháp, công cụ chỉ ra ký tự nơi việc phân tích thất bại.
Tóm tắt cú pháp
| Biểu thức | Ý nghĩa |
|---|---|
$ | Gốc của tài liệu |
.name hoặc ['name'] | Một thành viên của đối tượng |
[0], [-1] | Một phần tử mảng (số âm đếm từ cuối) |
[1:3], [::2] | Lát cắt: đầu, cuối (không gồm) và bước |
* | Mọi thành viên hoặc phần tử |
..name | name ở mọi cấp |
[?@.price < 10] | Các phần tử con thỏa bộ lọc; @ là phần tử hiện tại |
Bộ lọc có thể kết hợp điều kiện bằng &&, || và !, so sánh với phần khác của tài liệu qua $ và gọi hàm: length(@.tags) > 2, count(@.items[*]) == 0, match(@.code, '[A-Z]{3}') khi toàn bộ chuỗi phải khớp biểu thức chính quy, và search(@.title, 'Ring') khi chỉ cần khớp ở bất kỳ đâu.
Ví dụ
Với dữ liệu hiệu sách mẫu, truy vấn sau chọn tiêu đề các cuốn sách có giá dưới 10:
$.store.book[?@.price < 10].title
và trả về:
["Sayings of the Century", "Moby Dick"]
Đổi thành $..book[?@.isbn].author để liệt kê tác giả của các sách có ISBN, hoặc $..price để gom mọi mức giá trong cửa hàng, kể cả giá chiếc xe đạp.
Câu hỏi thường gặp
› Hỗ trợ cú pháp JSONPath nào?
Cú pháp chuẩn của RFC 9535: tên thành viên dạng dấu chấm và ngoặc vuông, ký tự đại diện, chỉ số mảng (kể cả số âm), lát cắt, tìm ở mọi cấp với .., bộ lọc có phép so sánh và && || !, cùng các hàm length(), count(), match(), search() và value(). Cách viết cũ ?(@.price < 10) vẫn dùng được vì dấu ngoặc chỉ để nhóm.
› Vì sao truy vấn trả về mảng rỗng?
Mảng rỗng nghĩa là truy vấn hợp lệ nhưng không khớp gì. Hãy kiểm tra tên thành viên (phân biệt hoa thường) và xem giá trị là mảng hay đối tượng. Chạy một truy vấn rộng như $..* với Hiển thị là Đường dẫn để xem tài liệu có những gì.
› Có dùng được biểu thức script như [(@.length-1)] không?
Không. Biểu thức script chạy mã tùy ý và không thuộc tiêu chuẩn. Hãy dùng chỉ số âm: [-1] là phần tử cuối, [-2:] là hai phần tử cuối.
› JSON của tôi có bị gửi lên máy chủ không?
Không. Truy vấn được phân tích và thực thi ngay trong trình duyệt bằng mã của trang; không có gì được tải lên.