هل وجدت نفسك يومًا تتنقل في استجابة JSON ضخمة، تحاول العثور على تلك القطعة الواحدة من البيانات التي تحتاجها؟ إذا كنت قد فعلت، فأنت تعرف أنه يمكن أن يكون كالبحث عن إبرة في كومة قش. هنا يأتي JSONPath - أداة صغيرة رائعة يمكن أن تجعل حياتك أسهل بكثير عند التعامل مع بيانات JSON في واجهات برمجة التطبيقات.
ما هو JSONPath؟
JSONPath هو لغة استعلام لـ JSON، مشابهة لـ XPath لـ XML. يسمح لك بالتنقل واستخراج أجزاء محددة من بيانات JSON باستخدام تركيب بسيط وبديهي. فكر في الأمر كطريقة لتشغيل استعلامات على بيانات JSON الخاصة بك والحصول بالضبط على ما تحتاجه دون الحاجة إلى التصفية في الاستجابة الكاملة.
لماذا تستخدم JSONPath؟
تخيل أن لديك استجابة JSON ضخمة من واجهة برمجة التطبيقات؛ كل ما تحتاجه هو قيمة حقل محدد متداخل بعيدًا في الداخل. بدون JSONPath، عادةً ما يتعين عليك كتابة مجموعة من الأكواد لتحليل JSON، مما يمكن أن يكون مجهدًا وعرضة للأخطاء. يبسط JSONPath ذلك من خلال السماح لك بتحديد ما تود استخراجه بالضبط، مما يجعل كودك أنظف وأسهل في الصيانة.
كيف يعمل JSONPath؟
يستخدم JSONPath تركيبًا مشابهًا لتدوين كائنات JavaScript، مع بعض الميزات المضافة لاستعلامات أكثر تعقيدًا. إليك نظرة سريعة على التركيب الأساسي:
$
: يمثل الكائن أو المصفوفة الجذرية..
أو[]
: عامل الطفل؛ يُستخدم للوصول إلى خاصية الكائن أو عنصر المصفوفة.*
: بديل؛ يتطابق مع جميع العناصر أو الحقول...
: هبوط تكراري؛ يبحث عن العقد المتطابقة في أي مستوى.?()
: يطبق فلتر (يجب أن يكون التعبير صحيحًا).()
: تعبير نصي، باستخدام محرك النصوص الأساسي.
دعنا نغوص في بعض الأمثلة لرؤية JSONPath في العمل.
أمثلة أساسية على JSONPath
اعتبر البيانات التالية من واجهة برمجة التطبيقات لقاعدة بيانات الأفلام:
{
"movies": {
"action": [
{ "title": "Mad Max: Fury Road", "director": "George Miller", "year": 2015, "rating": 8.1 },
{ "title": "John Wick", "director": "Chad Stahelski", "year": 2014, "rating": 7.4 }
],
"drama": [
{ "title": "The Shawshank Redemption", "director": "Frank Darabont", "year": 1994, "rating": 9.3 },
{ "title": "Forrest Gump", "director": "Robert Zemeckis", "year": 1994, "rating": 8.8 }
],
"comedy": [
{ "title": "The Grand Budapest Hotel", "director": "Wes Anderson", "year": 2014, "rating": 8.1 }
]
}
}
استخراج جميع أفلام الحركة:
$.movies.action[*]
هذا سيعطيك مصفوفة من جميع كائنات أفلام الحركة.
استخراج عناوين جميع أفلام الدراما:
$.movies.drama[*].title
هذا سيعيد مصفوفة من عناوين جميع أفلام الدراما: ["The Shawshank Redemption", "Forrest Gump"]
.
استخراج تقييم "Mad Max: Fury Road":
$.movies.action[?(@.title == "Mad Max: Fury Road")].rating
هذا سيعيد تقييم "Mad Max: Fury Road": 8.1
.
البحث عن جميع الأفلام التي تم إصدارها في عام 2014:
$.movies..[?(@.year == 2014)]
هذا سيعيد جميع الأفلام التي صدرت في عام 2014، والتي في هذه الحالة هي: ["John Wick", "The Grand Budapest Hotel"]
.
JSONPath في واجهات برمجة التطبيقات
استخدام JSONPath في واجهات برمجة التطبيقات مفيد للغاية عندما تريد استخراج معلومات محددة من استجابة JSON. العديد من لغات البرمجة والأدوات لديها مكتبات تدعم JSONPath، مما يجعل من السهل دمجه في مشاريعك.
على سبيل المثال، في Javascript، يمكنك استخدام مكتبة jsonpath
:
const jsonpath = require('jsonpath');
// Sample JSON data
const data = {
movies: {
action: [
{ title: "Mad Max: Fury Road", director: "George Miller", year: 2015, rating: 8.1 },
{ title: "John Wick", director: "Chad Stahelski", year: 2014, rating: 7.4 }
],
drama: [
{ title: "The Shawshank Redemption", director: "Frank Darabont", year: 1994, rating: 9.3 },
{ title: "Forrest Gump", director: "Robert Zemeckis", year: 1994, rating: 8.8 }
],
comedy: [
{ title: "The Grand Budapest Hotel", director: "Wes Anderson", year: 2014, rating: 8.1 }
]
}
};
// Extracting titles of all drama movies
const titles = jsonpath.query(data, '$.movies.drama[*].title');
console.log(titles); // Output: ["The Shawshank Redemption", "Forrest Gump"]
بنفس الطريقة، في Python، يمكنك استخدام مكتبة jsonpath-ng
:
from jsonpath_ng import jsonpath, parse
# Sample JSON data
data = {
"movies": {
"action": [
{"title": "Mad Max: Fury Road", "director": "George Miller", "year": 2015, "rating": 8.1},
{"title": "John Wick", "director": "Chad Stahelski", "year": 2014, "rating": 7.4}
],
"drama": [
{"title": "The Shawshank Redemption", "director": "Frank Darabont", "year": 1994, "rating": 9.3},
{"title": "Forrest Gump", "director": "Robert Zemeckis", "year": 1994, "rating": 8.8}
],
"comedy": [
{"title": "The Grand Budapest Hotel", "director": "Wes Anderson", "year": 2014, "rating": 8.1}
]
}
}
# Extracting titles of all drama movies
jsonpath_expr = parse('$.movies.drama[*].title')
titles = [match.value for match in jsonpath_expr.find(data)]
print(titles) # Output: ["The Shawshank Redemption", "Forrest Gump"]
استخدام JSONPath في Apidog

Apidog هي أداة متعددة الاستخدامات مصممة لتبسيط عملية العمل مع واجهات برمجة التطبيقات، ويدعم JSONPath بشكل مباشر.

إليك كيف يمكن أن يساعدك Apidog في استغلال قوة JSONPath بشكل فعال:
أولاً، ستحتاج إلى إرسال طلبات إلى واجهات برمجة التطبيقات الخاصة بك ومشاهدة الاستجابات مباشرة مع Apidog. ثم يمكنك استخدام الواجهة المقدمة لتطبيق استعلام JSONPath لاستخراج عناوين جميع أفلام الحركة من الاستجابة.

من لقطة الشاشة أعلاه، سترى أننا (1) أرسلنا طلب GET
إلى خادمنا - لقد أنشأت خادم express بسيط باستخدام بيانات JSON التي حصلنا عليها كاستجابة. ثم انتقلت إلى علامة تبويب معالجة ما بعد (2)، وأضفت عملية جديدة - استخراج متغير
(3).
عند النقر على استخراج متغير
، سيتم عرض الصفحة أدناه؛

يمكنك تعيين اسم متغير (1) إذا أردت. تكون المتغيرات مفيدة إذا كنت ترغب في مراقبة أو بناء واجهات برمجة التطبيقات المختلفة وتحتاج إلى مكان واحد لإدارة التكوين العام. المتغيرات هنا مثل ملفات .env
.
الخطوة الأخرى هي كتابة JSONPath الذي تريد تصفيته (2). في حالتنا هنا، نريد الحصول على عناوين الأفلام في مصفوفة الحركة في JSON الخاص بنا. بمجرد كتابة المسار حاليًا، انقر فوق زر السهم (3) لفتح صفحة الاستجابة للاستعلام كما هو موضح أدناه.

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