أداة اختبار مسارات JSON (JSONPath)
قم بلصق مستند بصيغة JSON، ثم أدخل تعبيرًا من نوع JSONPath مثل $..book[?(@.price<10)]. سيقوم أداة الاختبار بتقييم هذا التعبير بالنسبة للمستند ويعرض جميع القيم المطابقة مع المسار الدقيق لكل قيمة مطابقة. يُعد هذا أداة مفيدة للتحقق من صحة الاستعلام الذي ستقوم بإدخاله في سكريبت أو مواصفة واجهة برمجة التطبيقات (حيث تدعم كل من Postman وk6 وJMeter استخدام JSONPath).
كيفية اختبار تعبير JSONPath
-
1
لصق مستند JSON
أي ملف JSON صالح، كائن، مصفوفة، أو مصفوفة معقدة ذات تضمين عميق.
-
2
أدخل التعبير
ابدأ باستخدام `$` كجذر، واستخدم `.` كعنصر فرعي، و`..` للنزول التكراري، و`[*]` كرمز عشوائي (wildcard).
-
3
شاهد التطابقات مباشرةً
يتم عرض كل تطابق مع قيمته ومسار JSONPath الكامل الخاص به، مع إبرازه في المستند الأصلي.
-
4
قم بنسخ النتائج.
قم بنسخ المطابقات كمصفوفة JSON، أو نسخ كل مسار على حدة لاستخدامه في الكود اللاحق.
مرجع صيغة JSONPath
| التعبير | المعنى |
|---|---|
$ |
العنصر الجذري |
$.store |
طفل من $ يُسمى store |
$["store"] |
نفسه، على شكل قوس |
$..author |
جميع خصائص author على أي عمق |
$.store.book[*] |
جميع الكتب في المتجر |
$.store.book[0] |
الكتاب الأول |
$.store.book[-1:] |
الكتاب الأخير |
$.store.book[0:2] |
الكتابان الأولان (جزء) |
$.store.book[?(@.isbn)] |
الكتب التي تحتوي على الخاصية isbn |
$.store.book[?(@.price < 10)] |
كتب بأسعار أقل من 10 |
$.store.book[?(@.category == "fiction")] |
كتب خيالية |
$..* |
كل قيمة، في كل مكان |
تعبيرات التصفية
تستخدم تعبيرات التصفية الرمز @ للإشارة إلى العقدة الحالية. ويدعم جهاز الاختبار المعاملات الشائعة التالية: ==، !=، <، >، <=، >=، &&، ||، بالإضافة إلى التعبير النمطي (regex) =~.
$.items[?(@.qty >= 10 && @.price < 50)]
لهجات JSONPath
توجد عدة تنفيذات لـ JSONPath تتميز ببعض التناقضات البسيطة. تلتزم أداة الاختبار هذه بالمواصفة الأصلية لـ Goessner وتحسينات RFC 9535، وهي متوافقة مع:
- جايواي جيس باث (جاوا)
- jsonpath-plus (لغة جافا سكريبت)
- jsonpath-rw (بايثون)
- التعبيرات الأساسية عن المسار في jq
تُشار إلى الميزات غير المتوافقة (مثل التعبيرات النصية التي تتضمن كود JavaScript عشوائيًا) في لوحة الأخطاء.
متى يتفوق JSONPath على محلل كامل
- تأكيدات الاختبار: تستقبل أداة
pm.expect(jsonData).to.have.jsonPath(...)الخاصة بـ Postman مسارًا. - استخراج الإعدادات: استخراج قيمة واحدة من رد واسع النطاق من واجهة برمجة التطبيقات دون الحاجة إلى أي مكتبة.
- سكريبتات اختبار التحميل: تدعم كل من k6 وJMeter وGatling استخدام JSONPath في عمليات التحقق.
- Kubernetes / AWS CLI: تتيح علامتا
--queryو--jsonpathتحديد شكل الناتج من سطر الأوامر.
الأخطاء الشائعة
- استخدام
.على المصفوفة: قيمة$.users.0.nameخاطئة؛ استخدم$.users[0].name. - نسيان الرمز
..عند تحديد العمق: يتطابق مسار مثل$.nameفقط مع المستوى الأعلىname؛ لذا استخدم$..nameفي جميع الحالات. - الخلط بين JSONPath وjq: يُعد jq مجموعة شاملة تشمل التدفق التحكمي والتحويلات، بينما يُستخدم JSONPath حصريًا لاستخراج البيانات.
- التثبيت في التعبير النمطي (regex): يتطابق
=~ /foo/مع السلاسل النصية الجزئية؛ استخدم/^foo$/للتطابق الدقيق.
الأسئلة الشائعة
JSONPath هو لغة استخراج خالصة تتيح عمليات الاختيار والتصفية والتقسيم. أما jq فهو لغة استعلام وتحويل متكاملة تدعم تدفق التحكم والمتغيرات والدوال. بالنسبة لعمليات الاستخراج البسيطة، يُعد JSONPath أكثر قابلية للنقل؛ أما بالنسبة للتحويلات، فيُفضل استخدام jq.
مواصفات جويسنر الأصلية مع التحسينات الواردة في RFC 9535، وهي متوافقة مع JaywayJsonPath (باللغة جافا) وjsonpath-plus (في نظام نود). لا تُدعم الإضافات الخاصة بكل لهجة (مثل التعبيرات السكريبتية التي تحتوي على كود عشوائي).
نعم، يتطابق $..book[?(@.title =~ /^Harry.*/)] مع جميع الكتب التي يبدأ عنوانها بـ “Harry”. أما ^ و$ فيُستخدمان للتطابق الكامل.
نعم، كل من JSON ومُقيِّم JSONPath موجودان داخل متصفحك؛ ولا يغادر المستند أو الاستعلامات المتصفح أبدًا.
أدوات ذات صلة
مرجع جدول ASCII
جدول ASCII كامل من 0 إلى 127 مع التمثيل العشري والست عشري والثماني والثنائي والمرجع الرقمي في HTML لكل محرف، بما في ذلك أكواد التحكم مثل NUL وLF وDEL.
مرجع أحرف HTML
قائمة قابلة للبحث بكيانات HTML، مع رموزها المسمّاة والرقمية، بالإضافة إلى خيار النسخ بنقرة واحدة للأحرف والرموز الخاصة.
مرجع اختصارات لوحة المفاتيح
ابحث في الاختصارات الافتراضية الموثقة لـ VS Code وChrome وBash مع GNU Readline على macOS وWindows وLinux.
مدقق البريد الإلكتروني
تحقق من عنوان بريد إلكتروني: فحص صياغة RFC 5322، واستعلام حي عن سجل MX، بالإضافة إلى تفاصيل الجزء المحلي والنطاق والطول. لا يتم إرسال أي بريد.
مولد EditorConfig
أنشئ ملف .editorconfig بقواعد نمط المسافة البادئة وحجمها ونهاية السطر ومجموعة الأحرف والمسافات البيضاء، لتنسيق موحّد عبر بيئات التطوير المتكاملة (IDEs) والمحررات.
منسق HTML
نسّق HTML محلياً في المتصفح بمسافة بادئة من مسافتين أو أربع مسافات. لا يُرفع HTML ولا يُتحقق منه.
الأداة متاحة بلغات أخرى
- JSONPath-testare [SV]
- Testeur JSONPath [FR]
- JSON Path Tester [NL]
- เครื่องมือทดสอบ JSON Path [TH]
- Công cụ kiểm thử JSONPath [VI]
- JSON Path Tester [ID]
- Probador de JSONPath [ES]
- JSONPath テスター [JA]
- JSONPath 테스터 [KO]
- JSONPath-Tester [DE]
- Tester JSONPath [PL]
- Testador de JSONPath [PT]
- JSONPath Tester [RU]
- JSONPath Test Aracı [TR]
- JSON路径测试器 [ZH]
- JSONPath Tester [EN]
- Tester JSONPath [IT]