أداة اختبار مسارات 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 موجودان داخل متصفحك؛ ولا يغادر المستند أو الاستعلامات المتصفح أبدًا.
أدوات ذات صلة
مولّد إعدادات Webpack
أنشئ ملف webpack.config.js لـ webpack 5 لمشاريع JavaScript الخالصة أو React أو Vue: مع TypeScript وBabel وCSS أو Sass والصور وHtmlWebpackPlugin وخادم التطوير وسطر npm install.
محوّل ترميز ملفات النصوص
حوّل النص بين UTF-8 وUTF-16 وLatin-1 وWindows-1252 وترميزات أخرى لإصلاح الأحرف المشوّهة.
مرجع جدول ASCII
جدول ASCII كامل من 0 إلى 127 مع التمثيل العشري والست عشري والثماني والثنائي والمرجع الرقمي في HTML لكل محرف، بما في ذلك أكواد التحكم مثل NUL وLF وDEL.
مولّد ملف .gitignore
اجمع قواعد استبعاد المشروع لـ Laravel وNode.js وPython وRails. انسخ الناتج أو نزّل ملف ZIP يحتوي على .gitignore، مع إبقاء القواعد الشخصية منفصلة.
مُحقق تنسيق XSD
قم بالتحقق من وثيقة XML وفقًا لمخطط XSD، وعرض أي اختلافات بين العناصر وأنواعها مع تحديد أرقام السطور بدقة.
مولد ملف tsconfig.json
أنشئ ملف tsconfig.json نظيفا باختيار target وmodule وmoduleResolution وJSX وأعلام الصرامة الشائعة، ثم انسخ الإعداد المولّد إلى مشروعك.
الأداة متاحة بلغات أخرى
- JSONPath-Tester [DE]
- JSON Path Tester [NL]
- Tester JSONPath [PL]
- JSON Path Tester [ID]
- Công cụ kiểm thử JSONPath [VI]
- Testeur JSONPath [FR]
- JSONPath-testare [SV]
- JSONPath テスター [JA]
- Testador de JSONPath [PT]
- เครื่องมือทดสอบ JSON Path [TH]
- Probador de JSONPath [ES]
- JSONPath 테스터 [KO]
- JSONPath Tester [EN]
- Tester JSONPath [IT]
- JSONPath Tester [RU]
- JSONPath Test Aracı [TR]
- JSON路径测试器 [ZH]