ما هو JSONPath؟
JSONPath لغة استفسار لـ JSON، تشبه XPath لـ XML. يتنقل تعبير JSONPath عبر مستند JSON ويُعيد قيمة واحدة أو أكثر تطابق المسار المُحدَّد. يُمثَّل جذر المستند بـ $، وتُصاب مفاتيح الكائنات بالنقطة ($.user.name) أو بين قوسين معقوفين، وعناصر المصفوفة بفهرسها أو بحرف بدلي ($.items[*]).
يُستخدَم JSONPath على نطاق واسع في أنظمة الإعدادات وبوابات API وأطر الاختبار وخطوط تحويل البيانات. يستخدم AWS EventBridge تعبيرات JSONPath لتصفية الأحداث؛ ويستخدمه Kubernetes لمطابقة الكائنات.
تدعم اللغة عدة مشغّلات قوية: مشغّل النزول المتكرر (..) يبحث عن مفتاح في كل مستويات الشجرة، وتعبيرات المرشح (?(...)) تختار العناصر المستوفية لشرط ما، ومشغّل الشريحة يعمل كتقطيع Python على المصفوفات.
أنماط JSONPath الشائعة
النقطة والأقواس المعقوفة: $.store.book[0].title يسترجع عنوان الكتاب الأول. النقطة التعريفية بين الأقواس مطلوبة حين يحتوي المفتاح على أحرف خاصة.
الأحرف البدلية والشرائح: $.store.book[*].author يُعيد جميع المؤلفين. $.store.book[-1:] يُعيد العنصر الأخير فقط. $.store.book[0:3] يُعيد العناصر الثلاثة الأولى.
النزول المتكرر والمرشحات: $..price يُعيد كل قيمة سعر في أي مستوى تداخل. $.store.book[?(@.price < 10)] يُعيد جميع الكتب التي سعرها أقل من 10.
JSONPath مقابل JMESPath مقابل jq
JSONPath (المُوحَّد في RFC 9535) هو تعريف الاستفسار JSON الأكثر استخداماً ومدعوم أصلاً في لغات ومنصات كثيرة.
يستخدم JMESPath واجهة AWS CLI وحزم SDK. له قواعد نحوية أكثر رسمية ويدعم دوال مدمجة (sort_by وkeys وvalues وlength وcontains).
jq معالج JSON سطر أوامر بلغة خاصة أكثر قدرة بكثير، لكن بمنحنى تعلّم أشد. تركّز أداتنا على معيار RFC 9535 الأكثر حمولية للتضمين في التطبيقات.