JSONPath في واجهات برمجة التطبيقات: دليل بسيط

يمكن أن تكون استجابات JSON المعقدة في واجهات برمجة التطبيقات مرعبة، لكن JSONPath تبسط هذه المهمة. تسمح لك JSONPath باستخراج بيانات محددة بسهولة. ولكن، ما هو JsonPath بالضبط، وكيف يمكننا استخدامه في قاعدة الشيفرة الخاصة بنا؟ تجيب هذه المقالة عن هذه الأسئلة!

Amir Hassan

Amir Hassan

27 مايو 2025

JSONPath في واجهات برمجة التطبيقات: دليل بسيط

هل وجدت نفسك يومًا تتنقل في استجابة 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

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

إليك كيف يمكن أن يساعدك Apidog في استغلال قوة JSONPath بشكل فعال:

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

صفحة معالجة Post لـ Apidog

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

عند النقر على استخراج متغير، سيتم عرض الصفحة أدناه؛

صفحة إعداد JSONPath لاستخراج Apidog

يمكنك تعيين اسم متغير (1) إذا أردت. تكون المتغيرات مفيدة إذا كنت ترغب في مراقبة أو بناء واجهات برمجة التطبيقات المختلفة وتحتاج إلى مكان واحد لإدارة التكوين العام. المتغيرات هنا مثل ملفات .env.

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

استجابة jsonpath apidog

كما ترى من الاستجابة أعلاه، قام Apidog بتصفية عناوين الأفلام في مصفوفة الحركة وعرضها لنا.

إذا كنت ترغب في تجربة ذلك، فتأكد من تنزيل وتثبيت Apidog وأرسل أول طلب لك باستخدامه.

زر

الخاتمة

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

ممارسة تصميم API في Apidog

اكتشف طريقة أسهل لبناء واستخدام واجهات برمجة التطبيقات