مقدمة في nlohmann/json: ما هو ولماذا تحتاجه
\n\nمكتبة nlohmann/json (المعروفة أيضًا باسم JSON for Modern C++) هي واحدة من أشهر وأسهل المكتبات للتعامل مع JSON في لغة C++. تم تطويرها بواسطة Niels Lohmann ويتم توزيعها بموجب ترخيص MIT. الهدف الرئيسي للمكتبة هو توفير واجهة بديهية وحديثة وآمنة لتحليل وإنشاء وتعديل وتسلسل بيانات JSON.
\n\nلماذا تحتاجها؟ في التطوير الحديث، JSON (JavaScript Object Notation) هو المعيار الفعلي لتبادل البيانات بين الخدمات، وتخزين التكوينات، والعمل مع API وتطبيقات الويب. لا تحتوي مكتبة C++ القياسية على دعم مدمج لـ JSON، لذلك يضطر المطورون إما إلى كتابة محللات خاصة بهم أو استخدام حلول خارجية. تحل nlohmann/json هذه المشكلة من خلال تقديم:
\n\n- \n
- بناء جملة بسيط — العمل مع JSON يشبه العمل مع حاويات STL المدمجة (std::map، std::vector). \n
- أمان الأنواع — تحويل تلقائي بين أنواع C++ و JSON. \n
- أداء عالي — المكتبة محسّنة للسرعة والذاكرة. \n
- توافق عبر المنصات — تعمل على Windows، Linux، macOS، وكذلك على الأنظمة المضمنة. \n
- دعم كامل لمعيار JSON — بما في ذلك الكائنات المتداخلة، المصفوفات، null، القيم المنطقية، الأرقام والسلاسل النصية. \n
تُستخدم المكتبة بنشاط في المشاريع الصناعية، مثل محركات الألعاب، خوادم الويب، أدوات تحليل البيانات وأجهزة إنترنت الأشياء.
\n\nتثبيت nlohmann/json
\n\nعلى عكس Python (حيث يُستخدم pip)، في C++ يمكن تثبيت المكتبات بعدة طرق. دعنا نستعرض أشهرها.
\n\nالطريقة 1: Header-only (موصى بها للمبتدئين)
\nمكتبة nlohmann/json هي header-only — وهذا يعني أنه لاستخدامها، يكفي تنزيل ملف الرأس json.hpp وإدراجه في المشروع. لا حاجة إلى أي ترجمة أو ربط أو تثبيت تبعيات.
- \n
- قم بتنزيل ملف
json.hppمن المستودع الرسمي (أحدث إصدار هو v3.11.3). \n - ضعه في مجلد مشروعك، على سبيل المثال،
include/json.hpp. \n - في الكود المصدري، قم بتضمينه:
#include "json.hpp". \n
الطريقة 2: التثبيت عبر مديري الحزم
\nإذا كنت تستخدم أنظمة بناء حديثة، يمكنك تثبيت المكتبة عبر مدير الحزم:
\n- \n
- vcpkg (Windows، Linux، macOS):
vcpkg install nlohmann-json\n - Conan:
conan install nlohmann_json/3.11.3@\n - Homebrew (macOS):
brew install nlohmann-json\n - APT (Ubuntu/Debian):
sudo apt install nlohmann-json3-dev\n
الطريقة 3: CMake FetchContent
\nللمشاريع التي تستخدم CMake، يمكن تنزيل المكتبة تلقائيًا أثناء البناء:
\ninclude(FetchContent)\nFetchContent_Declare(\n json\n GIT_REPOSITORY https://github.com/nlohmann/json.git\n GIT_TAG v3.11.3\n)\nFetchContent_MakeAvailable(json)\ntarget_link_libraries(your_target PRIVATE nlohmann_json::nlohmann_json)\n\nبداية سريعة: المثال الأول
\n\nلنكتب برنامجًا بسيطًا يقوم بإنشاء كائن JSON، وعرضه على الشاشة، ثم تحليل سلسلة JSON مرة أخرى.
\n\n#include <iostream>\n#include "json.hpp"\n\nusing json = nlohmann::json;\n\nint main() {\n // 1. إنشاء كائن JSON\n json person = {\n {"name", "Alice"},\n {"age", 30},\n {"is_student", false},\n {"skills", {"C++", "Python", "JSON"}},\n