Jackson لجافا: دليل شامل مع أمثلة

مدرب بايثون أونلاين للمبتدئين

تعلم Python بسهولة دون إرهاق نظري. حل مهام عملية مع التحقق التلقائي واكتب الكود مباشرة في المتصفح.

ابدأ الدورة

ما هو Jackson ولماذا هو مطلوب؟

\n\n

Jackson هي مكتبة قوية وعالية الأداء لجافا، مصممة لمعالجة البيانات بتنسيق JSON (JavaScript Object Notation). في تطوير تطبيقات جافا الحديثة، أصبح JSON المعيار الفعلي لتبادل البيانات بين العميل والخادم، خاصة في خدمات الويب RESTful وهندسة الخدمات المصغرة. يحل Jackson ثلاث مهام رئيسية:

\n\n
    \n
  • التسلسل (Serialization) — تحويل كائنات جافا إلى سلسلة JSON.
  • \n
  • إلغاء التسلسل (Deserialization) — تحويل سلسلة JSON مرة أخرى إلى كائنات جافا.
  • \n
  • التلاعب بالشجرة (Tree Model) — العمل مع JSON كهيكل شجري من العقد (JsonNode).
  • \n
\n\n

تتميز المكتبة بسرعة عمل عالية، ومرونة في التكوين، ودعم واسع للتعليقات التوضيحية. يُستخدم Jackson في عمالقة مثل Spring Framework (عبر وحدة spring-web)، وPlay Framework، والعديد من الحلول المؤسسية الأخرى. من الصعب تخيل تطوير جافا الحديث بدون Jackson، حيث يتطلب التكامل مع واجهات برمجة التطبيقات الخارجية، والعمل مع ملفات التكوين، أو تخزين البيانات في قواعد بيانات NoSQL.

\n\n

تثبيت Jackson

\n\n

يتكون Jackson من عدة وحدات. أهمها:

\n
    \n
  • jackson-core — نواة المكتبة (محلل/مولد تدفقي).
  • \n
  • jackson-databind — وحدة التسلسل/إلغاء التسلسل (تعتمد على core و annotations).
  • \n
  • jackson-annotations — تعليقات توضيحية لتكوين التعيين.
  • \n
\n\n

معظم المهام تكفيها إضافة jackson-databind، حيث أنه يسحب الوحدات الأخرى بشكل تلقائي.

\n\n

التثبيت عبر Maven

\n

أضف إلى ملف pom.xml:

\n
<dependency>\n    <groupId>com.fasterxml.jackson.core</groupId>\n    <artifactId>jackson-databind</artifactId>\n    <version>2.17.1</version> <!-- تحقق من أحدث إصدار على Maven Central -->\n</dependency>
\n\n

التثبيت عبر Gradle

\n

أضف إلى ملف build.gradle:

\n
implementation 'com.fasterxml.jackson.core:jackson-databind:2.17.1'
\n\n

التثبيت عبر pip؟ لا، هذه جافا!

\n

ملاحظة مهمة: Jackson هي مكتبة لجافا، وليست لبايثون. في بايثون، النظير هو الوحدة القياسية json أو مكتبة simplejson. بالنسبة لجافا، يتم التثبيت عبر أنظمة إدارة التبعيات (Maven، Gradle) أو عن طريق تنزيل ملفات JAR من الموقع الرسمي.

\n\n

بداية سريعة: المثال الأول

\n\n

لنقم بإنشاء فئة جافا بسيطة ونتعلم تحويلها إلى JSON والعكس.

\n\n

الخطوة 1: إنشاء فئة النموذج

\n
import com.fasterxml.jackson.annotation.JsonProperty;\n\npublic class User {\n    private String name;\n    private int age;\n    private String email;\n\n    // يجب وجود مُنشئ افتراضي!\n    public User() {}\n\n    public User(String name, int age, String email) {\n        this.name = name;\n        this.age = age;\n        this.email = email;\n    }\n\n    // دوال الحصول (Getters) والإعداد (Setters) إلزامية لـ Jackson\n    public String getName() { return name; }\n    public void setName(String name) { this.name = name; }\n\n    public int getAge() { return age; }\n    public void setAge(int age) { this.age = age; }\n\n    public String getEmail() { return email; }\n    public void setEmail(String email) { this.email = email; }\n}
\n\n

الخطوة 2: التسلسل وإلغاء التسلسل

\n
import com.fasterxml.jackson.databind.ObjectMapper;\n\npublic class Main {\n    public static void main(String[] args) throws Exception {\n        // إنشاء الكائن الرئيسي للمكتبة\n        ObjectMapper mapper = new ObjectMapper();\n\n        // إنشاء كائن جافا\n        User user = new User("إيفان بيتروف", 30, "ivan@example.co                    

توصيات