Công cụ kiểm thử JSONPath
Hãy dán một tài liệu JSON và nhập một biểu thức JSONPath như $..book[?(@.price<10)]. Bộ kiểm thử sẽ đánh giá biểu thức này trên tài liệu và hiển thị tất cả các giá trị phù hợp cùng đường dẫn chính xác của từng kết quả khớp. Phương pháp này rất hữu ích để xác thực truy vấn bạn sắp dán vào kịch bản hoặc tài liệu mô tả API (Postman, k6 và JMeter đều hỗ trợ JSONPath).
Cách kiểm thử biểu thức JSONPath
-
1
Dán tài liệu JSON
Bất kỳ đối tượng JSON hợp lệ nào, bao gồm đối tượng, mảng hoặc cấu trúc được nhúng sâu.
-
2
Nhập biểu thức
Bắt đầu bằng `$` cho gốc; sử dụng `.` cho con, `..` cho việc truyền ngược theo cấu trúc lồng ghép, và `[*]` cho ký tự thay thế (wildcard).
-
3
Xem các kết quả khớp theo thời gian thực
Mỗi kết quả khớp đều được hiển thị kèm giá trị và đường dẫn JSONPath đầy đủ, được đánh dấu nổi bật trong tài liệu gốc.
-
4
Sao chép kết quả
Sao chép các kết quả khớp dưới dạng mảng JSON, hoặc sao chép từng đường dẫn riêng biệt để sử dụng trong mã phía sau.
Tài liệu tham khảo cú pháp JSONPath
| Biểu thức | Ý nghĩa |
|---|---|
$ |
Phần tử gốc |
$.store |
Con của $, tên là store |
$["store"] |
Tương tự, dạng ngoặc vuông |
$..author |
Tất cả các thuộc tính của author ở mọi độ sâu |
$.store.book[*] |
Mọi cuốn sách trong cửa hàng |
$.store.book[0] |
Cuốn sách đầu tiên |
$.store.book[-1:] |
Cuốn sách cuối cùng |
$.store.book[0:2] |
Hai cuốn sách đầu tiên (phần cắt) |
$.store.book[?(@.isbn)] |
Các cuốn sách có thuộc tính isbn |
$.store.book[?(@.price < 10)] |
Sách giá dưới 10 |
$.store.book[?(@.category == "fiction")] |
Sách hư cấu |
$..* |
Mọi giá trị, ở mọi nơi |
Các biểu thức lọc
Các biểu thức lọc sử dụng @ để tham chiếu đến nút hiện tại. Thiết bị kiểm thử hỗ trợ các toán tử phổ biến là ==, !=, <, >, <=, >=, &&, || và biểu thức chính tắc regex =~.
$.items[?(@.qty >= 10 && @.price < 50)]
Các phương ngữ của JSONPath
Có nhiều cách triển khai JSONPath với một số sự không tương thích nhỏ. Bộ kiểm thử này tuân thủ tập đặc tả gốc của Goessner và các cải tiến trong RFC 9535, và tương thích với:
- JaywayJsonPath (Java)
- jsonpath-plus (JavaScript)
- jsonpath-rw (Python)
- Các biểu thức đường dẫn cơ bản của jq
Các tính năng không tương thích (như biểu thức script kết hợp với JS tùy ý) sẽ được đánh dấu trong bảng lỗi.
Khi JSONPath vượt trội hơn một bộ phân tích toàn diện
- Các khẳng định kiểm thử: Công cụ
pm.expect(jsonData).to.have.jsonPath(...)của Postman nhận một đường dẫn. - Trích xuất cấu hình: trích xuất một giá trị từ phản hồi API lớn mà không cần sử dụng thư viện nào.
- Các kịch bản kiểm thử tải: K6, JMeter và Gatling đều hỗ trợ JSONPath để thực hiện các kiểm tra.
- Kubernetes / AWS CLI: Các tùy chọn
--queryvà--jsonpathcho phép bạn định hình kết quả đầu ra từ dòng lệnh.
Các lỗi phổ biến
- Sử dụng
.trên một mảng.$.users.0.namelà không chính xác; hãy sử dụng$.users[0].name. - Bỏ quên
..khi xác định độ sâu. Các đường dẫn như$.namechỉ khớp vớinameở cấp cao nhất; hãy sử dụng$..namecho tất cả các trường hợp. - Nhầm lẫn JSONPath với jq. jq là một tập hợp rộng hơn bao gồm các cơ chế kiểm soát luồng và chuyển đổi dữ liệu; trong khi đó, JSONPath chỉ dùng riêng cho việc trích xuất dữ liệu.
- Neo bằng Regex.
=~ /foo/khớp với các chuỗi con; sử dụng/^foo$/để khớp chính xác.
Câu hỏi thường gặp
JSONPath là một ngôn ngữ trích xuất thuần túy – hỗ trợ chọn, lọc và cắt dữ liệu. jq là ngôn ngữ truy vấn và biến đổi đầy đủ, với cơ chế luồng điều khiển, biến và hàm. Đối với việc trích xuất đơn giản, JSONPath mang tính di động cao hơn; còn đối với các phép biến đổi, hãy sử dụng jq.
Bản đặc tả gốc của Goessner kết hợp với các cải tiến từ RFC 9535, tương thích với JaywayJsonPath (Java) và jsonpath-plus (Node). Các mở rộng riêng biệt cho từng phương ngữ (các biểu thức script chứa mã tùy ý) không được hỗ trợ.
Đúng vậy. $..book[?(@.title =~ /^Harry.*/)] phù hợp với tất cả các cuốn sách có tiêu đề bắt đầu bằng “Harry”. Để sử dụng chức năng khớp trọn vẹn, hãy dùng ^ và $.
Đúng vậy. Cả JSON và công cụ đánh giá JSONPath đều được lưu trữ trong trình duyệt của bạn; tài liệu và các truy vấn của bạn sẽ không bao giờ rời khỏi tab đó.
Công cụ liên quan
Bảng tham chiếu ASCII
Bảng ASCII đầy đủ từ 0 đến 127 với giá trị thập phân, thập lục phân, bát phân, nhị phân và ký hiệu tham chiếu ký tự số HTML, gồm NUL, LF và DEL.
Tham chiếu ký tự HTML
Danh sách có thể tìm kiếm các thực thể HTML, mã tên và mã số tương ứng của chúng, cùng chức năng sao chép chỉ với một cú nhấp cho các ký tự đặc biệt và biểu tượng.
Bảng tham khảo phím tắt
Tìm phím tắt mặc định theo tài liệu của VS Code, Chrome và Bash dùng GNU Readline trên macOS, Windows và Linux.
Trình định dạng HTML
Định dạng HTML cục bộ trong trình duyệt với thụt lề hai hoặc bốn khoảng trắng. HTML không được tải lên hoặc xác thực.
Bảng tra cứu nhanh Markdown
Tài liệu Markdown thực dụng với bản xem trước thực tế và ví dụ có thể sao chép cho tiêu đề, danh sách, bảng, mã, liên kết, hình ảnh và cú pháp GFM.
Bảng Tra Regex
Tài liệu tham chiếu biểu thức chính quy có thể tìm kiếm cho JavaScript, PCRE2/PHP, Python re và .NET. So sánh mã thông báo, cú pháp riêng của máy, neo, nhóm, lookaround và cờ.
Công cụ này có phiên bản bằng các ngôn ngữ khác
- JSONPath-testare [SV]
- JSON Path Tester [ID]
- JSONPath 테스터 [KO]
- Testador de JSONPath [PT]
- أداة اختبار مسارات JSON (JSONPath) [AR]
- JSON Path Tester [NL]
- Testeur JSONPath [FR]
- JSONPath-Tester [DE]
- Tester JSONPath [PL]
- Probador de JSONPath [ES]
- เครื่องมือทดสอบ JSON Path [TH]
- JSONPath テスター [JA]
- JSONPath Tester [EN]
- Tester JSONPath [IT]
- JSONPath Tester [RU]
- JSONPath Test Aracı [TR]
- JSON路径测试器 [ZH]