Thử JSONPath
Truy vấn JSON bằng biểu thức JSONPath và xem mọi kết quả khớp kèm đường dẫn
Về công cụ này
Thử các biểu thức JSONPath trên chính JSON của bạn và xem từng kết quả khớp kèm cả giá trị lẫn đường dẫn cụ thể. Công cụ hỗ trợ phần cú pháp bao trùm nhu cầu hằng ngày: ký pháp dấu chấm và ngoặc vuông, chỉ số mảng (kể cả số âm), ký tự đại diện, phép hợp (['a','b']) và duyệt đệ quy ($..price).
Đường dẫn hiện kèm mỗi kết quả mới là phần hữu ích một cách thầm lặng: chạy $..id trên một tài liệu lồng sâu, mỗi kết quả sẽ nói chính xác nó nằm ở đâu ($.data.items[3].id), sẵn sàng dán thẳng vào mã. Nó biến “đâu đó trong đống dữ liệu này” thành một địa chỉ chính xác.
Biểu thức lọc ([?(@.price < 10)]) hiện chưa được cài đặt — công cụ nói thẳng điều đó thay vì trả về kết quả sai. Còn với việc trích xuất theo cấu trúc, tức phần lớn nhu cầu dùng JSONPath, thì mọi thứ đều chạy.
Câu hỏi thường gặp
- $.a.b và $..b khác nhau chỗ nào?
- $.a.b đi theo đúng một lộ trình: khóa a ở gốc, rồi khóa b bên trong nó. $..b (duyệt đệ quy) tìm mọi khóa b ở bất kỳ đâu trong tài liệu, ở bất kỳ độ sâu nào. Duyệt đệ quy rất mạnh nhưng cũng dễ gây bất ngờ — nó khớp cả những khóa b nằm lồng trong những chỗ bạn không nghĩ tới.
- Làm sao truy cập khóa có dấu cách hoặc dấu gạch ngang?
- Dùng ký pháp ngoặc vuông kèm dấu nháy: $['my key'] hoặc $.data['content-type']. Ký pháp dấu chấm chỉ dùng được với những khóa có dạng định danh hợp lệ.
- Chỉ số mảng âm có dùng được không?
- Có — [-1] là phần tử cuối, [-2] là áp chót, theo đúng quy ước mà Python phổ biến hóa và RFC 9535 tiếp nhận. [0] vẫn là phần tử đầu tiên.
- JSONPath đã được chuẩn hóa chưa?
- Từ năm 2024 thì rồi — RFC 9535 định nghĩa cú pháp và ngữ nghĩa. Những bản cài đặt viết trước đó khác nhau ở các ca biên (nhất là bộ lọc và phép hợp), nên cùng một biểu thức có thể hành xử khác nhau giữa các thư viện; hãy thử nghiệm trên đúng thư viện bạn triển khai.