ما هو JSONPath؟

JSONPath هي لغة استعلام لـ JSON، تشبه طريقة عمل XPath مع XML. تتيح لك التنقل واستخراج البيانات من هيكل JSON باستخدام تعبيرات المسار. يبدأ تعبير JSONPath بـ $، الذي يمثل جذر المستند، ويستخدم تدوين النقطة (.key) أو تدوين الأقواس (['key']) للتنقل عبر الكائنات، و [index] للوصول إلى عناصر المصفوفة.

تم وصف JSONPath في الأصل بواسطة Stefan Gössner في عام 2007، وأصبحت منذ ذلك الحين معيارًا مستخدمًا على نطاق واسع في واجهات برمجة التطبيقات وأطر الاختبار وخطوط معالجة البيانات. يتم دعمها في العديد من اللغات والأدوات، بما في ذلك JavaScript و Python و Java وقواعد البيانات مثل PostgreSQL و MySQL.

وصف الأداة

تتيح لك هذه الأداة لصق أي مستند JSON صحيح وكتابة تعبير JSONPath للاستعلام عنه. يتم عرض النتائج فورًا أثناء الكتابة، مما يوضح جميع القيم المطابقة كمصفوفة JSON منسقة. يتم عرض عدد المطابقات بشكل منفصل حتى تتمكن من التحقق بسرعة من عدد العقد المحددة.

أمثلة

JSON الإدخال:

{
  "store": {
    "book": [
      { "title": "Moby Dick", "price": 8.99, "category": "fiction" },
      { "title": "War and Peace", "price": 12.5, "category": "fiction" },
      {
        "title": "A Brief History of Time",
        "price": 7.99,
        "category": "science"
      }
    ]
  }
}
التعبير النتيجة
$.store.book[*].title جميع عناوين الكتب
$.store.book[0] كائن الكتاب الأول
$.store.book[?(@.price < 10)] الكتب الأرخص من 10 دولارات
$.store.book[?(@.category == "fiction")] كتب الخيال العلمي فقط
$..price جميع قيم الأسعار في أي مكان في المستند

الميزات

  • التقييم في الوقت الفعلي — تتحدث النتائج أثناء كتابة التعبير أو تحرير JSON
  • عرض عدد المطابقات في حقل مخصص
  • زر النسخ في حقل التعبير لإعادة الاستخدام السريعة
  • زر اللصق لإدراج JSON أو التعبيرات بسرعة من الحافظة
  • الإبلاغ عن الأخطاء في JSON غير الصحيح أو تعبيرات المسار المشوهة

كيفية عمله

يتم تقييم تعبيرات JSONPath مقابل JSON المحلل باستخدام مكتبة jsonpath-plus. يشير الرمز $ إلى العنصر الجذر. يتم الوصول إلى العقد الفرعية باستخدام . أو []، والأحرف البدل باستخدام *، والنسب التكراري باستخدام ..، والمرشحات باستخدام [?(...)]. النتيجة دائمًا مصفوفة من القيم المطابقة، حتى لو تم العثور على مطابقة واحدة فقط.

شرح الخيارات

الصيغة المعنى
$ العنصر الجذر
.key أو ['key'] خاصية فرعية
[*] جميع عناصر المصفوفة
[0] عنصر المصفوفة الأول (مفهرس من الصفر)
[-1] عنصر المصفوفة الأخير
[0,2] العناصر في الفهرس 0 و 2
[0:2] العناصر من الفهرس 0 إلى 1 (شريحة)
..key النسب التكراري — ابحث عن key في أي عمق
[?(@.price > 5)] مرشح — العناصر حيث يكون price أكبر من 5
@ العقدة الحالية (تُستخدم داخل تعبيرات المرشح)

حالات الاستخدام

  • تطوير واجهات برمجة التطبيقات — تحقق من أن محدد JSONPath المستخدم في عميل REST أو مجموعة اختبار أو أداة تعيين البيانات يستخرج الحقول المتوقعة من استجابة API
  • تحويل البيانات — حدد القيم المراد استخراجها من حمولات JSON المتداخلة قبل كتابة سكريبت التحويل
  • تعلم JSONPath — جرب صيغة المسار بشكل تفاعلي لفهم كيفية عمل العوامل مثل .. و [*] و [?()] على البيانات الحقيقية

نصائح

  • استخدم $..* للحصول على كل قيمة واحدة في المستند بأكمله — مفيد لاستكشاف هياكل JSON غير المعروفة.
  • تدعم تعبيرات المرشح المقارنات (==, !=, <, >, <=, >=) ويمكنها الإشارة إلى الخصائص المتداخلة: [?(@.author.name == "Rees")].
  • لمطابقة خاصية بغض النظر عن عمقها، استخدم النسب التكراري ..: $..title يجد جميع حقول title في أي مكان في المستند.