شغّل استعلامات JSONPath وفق RFC 9535 على JSON ملصوق وشاهد كل تطابق مظلّلًا
يعمل في متصفحك. لا يُرسل أي شيء تكتبه إلى أي مكان.يستخرج JSONPath القيم من JSON بتعبير قصير. $.store.book[*].author يعيد كل المؤلفين، و$..price كل الأسعار في أي عمق، و$..book[[email protected] < 10] الكتب التي يقل سعرها عن 10 فقط. يتبع هذا المختبر RFC 9535، معيار عام 2024، ويظلّل كل تطابق في JSON المنسّق.
تُرجمت هذه الصفحة آليًا من الأصل الإنجليزي. لم يراجع أي شخص هذه الترجمة بعد، لذا فالنسخة الإنجليزية هي التي يُعتمد عليها. اقرأ الأصل الإنجليزي
الصق JSON في لوحة JSON، أو اضغط جرّب مثالًا.
اكتب استعلامًا في مربع JSONPath، أو اختر واحدًا من أمثلة.
شاهد التطابقات المعلَّمة في تبويب مظلّل، أو افتح النتائج لترى كل مسار وقيمة.
اضغط نسخ القيم لتحصل على التطابقات كمصفوفة JSON، أو نسخ المسارات.
يشغّل مختبر JSONPath هذا استعلامًا على JSON الذي تلصقه ويعرض النتيجة بثلاث طرق: قائمة بالقيم المطابقة، والمسار الموحّد لكل تطابق، وتظليل التطابقات داخل المستند المنسّق. تتحدّث النتيجة أثناء الكتابة، فيمكنك بناء التعبير خطوة بخطوة ورؤية موضع الخطأ.
يطبّق المحرك RFC 9535، معيار JSONPath الذي نشرته IETF في 2024. ويدعم الجذر $، والوصول إلى الأبناء بالنقطة والأقواس، وعامل النزول التكراري ..، وأحرف البدل، وفهارس المصفوفات بما فيها السالبة، والشرائح مثل [1:5:2] و[::-1]، وتعابير التصفية مع == و!= و< و<= و> و>= و&& و|| و!. وتتوفر الدوال القياسية الخمس: length() وcount() وvalue() وmatch() وsearch()، وتقبل الأخيرتان تعابير نمطية بصيغة I-Regexp. تُرفض الاستعلامات التي تخالف قواعد الأنواع في المعيار، مثل مقارنة استعلام قد يعيد عدة عُقد، مع رسالة توضح السبب.
تختلف مكتبات قديمة كثيرة عن المعيار في تفاصيل صغيرة، ومنها JSONPath الأصلي لعام 2007 وJayway للغة Java: بعضها يحتاج إلى أقواس حول المرشحات كما في [?(@.price < 10)]، وهذا لا يزال يعمل هنا؛ وبعضها يسمح بتعابير برمجية أو دوال إضافية لا يتضمنها RFC 9535. إذا رُفض استعلام مأخوذ من وثائق مكتبة ما، فعادةً ما تذكر الرسالة وجه الاختلاف.
يُبلَّغ عن JSON غير الصالح مع السطر والعمود لأول مشكلة. تُقرأ الأرقام كأرقام JavaScript، فتفقد الأعداد الصحيحة الأكبر من 2^53 دقتها، ويحتفظ المفتاح المكرر بآخر قيمة له.
ما لا يفعله: صيغة JMESPath أو jq، أو تحرير JSON، أو جلب عنوان URL. يعمل كل شيء في متصفحك. أدوات ذات صلة: JSON Formatter وJSON Diff وJSON to TypeScript.
استخدم محدّد تصفية: $.items[[email protected] == 'active'] يُبقي العناصر التي قيمة status فيها active. يمثّل @ كل عنصر بالتناوب. اجمع الشروط بـ && و||، وقارن الأرقام بـ < و>، واكتب [email protected] وحده لإبقاء العناصر التي تحتوي على حقل email أصلًا.
تأخذ النقطة الواحدة ابنًا للعقدة الحالية، فيقرأ $.store.book مستوى واحدًا في كل مرة. وتبحث النقطتان في كل الأعماق، فيجد $..price كل حقل price في أي مكان من المستند، بما في ذلك داخل المصفوفات. النزول التكراري مريح لكنه قد يطابق أكثر من المقصود في الاستجابات الكبيرة.
يتبع RFC 9535 الذي نشرته IETF في فبراير 2024، وهو أول معيار رسمي لـ JSONPath. تعمل غالبًا الاستعلامات المكتوبة لمكتبات أقدم، بما فيها المرشحات المحاطة بـ ?( )، أما التعابير البرمجية والدوال الخاصة بكل مكتبة فليست جزءًا من المعيار وتُرفض مع شرح.
استخدم فهرسًا سالبًا: $.items[-1] هو العنصر الأخير و$.items[-2] الذي قبله. وتعمل أيضًا شريحة ببداية سالبة، فيعيد $.items[-3:] آخر ثلاثة عناصر. الفهارس التي تتجاوز النهاية لا تعيد شيئًا بدلًا من إظهار خطأ.
المسار الموحّد هو الموضع الدقيق الوحيد لتطابق، مكتوبًا بصيغة ثابتة يحددها RFC 9535، مثل $['store']['book'][0]['title']. تعرض كل نتيجة مسارها الموحّد، وهو مفيد للإشارة إلى قيمة في تقرير خطأ أو في تأكيد اختبار.
نعم، باستخدام match() وsearch(). يشترط match(@.code, 'A[0-9]+') أن تطابق السلسلة كلها النمط، بينما يجده search(@.name, 'smith') في أي موضع. تستخدم الأنماط I-Regexp، وهي مجموعة فرعية محمولة من التعابير النمطية، لذلك لا تُقبل اختصارات مثل \d والنظر إلى الأمام.
هل ما زلت عالقًا؟ اسأل عن مختبر JSONPath ويمكن لأي شخص يعرف الإجابة أن يجيب. لا حاجة إلى حساب.