العمل مع JSON في Java: التحليل والتسلسل عمليًا

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

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

ابدأ الدورة

مقدمة في العمل مع JSON في Java

\n

JSON (JavaScript Object Notation) هو تنسيق خفيف لتبادل البيانات يُستخدم على نطاق واسع في تطبيقات الويب الحديثة وواجهات API والخدمات المصغرة. في Java، يُعد العمل مع JSON جزءًا لا يتجزأ من التطوير: بدءًا من قراءة ملفات التكوين وصولاً إلى التفاعل مع خدمات RESTful. في هذه المقالة، سنشرح عمليًا كيفية إجراء التحليل (تحويل JSON إلى كائنات Java) والتسلسل (تحويل كائنات Java إلى JSON) باستخدام أشهر مكتبتين: Jackson و Gson.

\n

سنستعرض أمثلة حقيقية على الكود، ونتعلم كيفية معالجة الهياكل المتداخلة، ونناقش الأخطاء الشائعة. بنهاية المقالة، ستكون قادرًا على العمل بثقة مع JSON في أي مشروع Java.

\n\n

1. المكتبات الأساسية للعمل مع JSON

\n

Jackson مقابل Gson: أيهما تختار؟

\n

توجد عدة مكتبات للعمل مع JSON في Java، لكن اثنتين منها أصبحتا المعيار الفعلي:

\n
    \n
  • Jackson — مكتبة أكثر أداءً ووظائفًا. تدعم التعليقات التوضيحية والمعالجة التدفقية والمُسلسِلات المخصصة. يُوصى بها للمشاريع المؤسسية.
  • \n
  • Gson — مكتبة بسيطة وخفيفة من Google. مثالية للمشاريع الصغيرة والنمذجة السريعة.
  • \n
\n

لتضمين أي منهما، يكفي إضافة التبعية في ملف pom.xml (Maven) أو build.gradle (Gradle).

\n\n

تضمين Jackson (Maven)

\n
<dependency>\n    <groupId>com.fasterxml.jackson.core</groupId>\n    <artifactId>jackson-databind</artifactId>\n    <version>2.15.2</version>\n</dependency>
\n\n

تضمين Gson (Maven)

\n
<dependency>\n    <groupId>com.google.code.gson</groupId>\n    <artifactId>gson</artifactId>\n    <version>2.10.1</version>\n</dependency>
\n\n

2. تحليل JSON: من سلسلة نصية إلى كائن Java

\n

التحليل هو عملية تحويل سلسلة JSON إلى كائن Java. سنستعرض كلا الأسلوبين باستخدام فئة User البسيطة كمثال.

\n\n

إنشاء نموذج البيانات

\n
public class User {\n    private String name;\n    private int age;\n    private String email;\n\n    // يجب وجود مُنشئ فارغ!\n    public User() {}\n\n    // دوال الوصول (Getters and Setters)\n    public String getName() { return name; }\n    public void setName(String name) { this.name = name; }\n    public int getAge() { return age; }\n    public void setAge(int age) { this.age = age; }\n    public String getEmail() { return email; }\n    public void setEmail(String email) { this.email = email; }\n}
\n\n

التحليل باستخدام Jackson

\n
import com.fasterxml.jackson.databind.ObjectMapper;\n\npublic class JacksonParsingExample {\n    public static void main(String[] args) throws Exception {\n        String json = "{\\"name\\":\\"إيفان\\",\\"age\\":30,\\"email\\":\\"ivan@example.com\\"}";\n        \n        ObjectMapper mapper = new ObjectMapper();\n        User user = mapper.readValue(json, User.class);\n        \n        System.out.println("الاسم: " + user.getName());\n        System.out.println("العمر: " + user.getAge());\n    }\n}
\n\n

التحليل باستخدام Gson

\n
import com.google.gson.Gson;\n\npublic class GsonParsingExample {\n    public static void main(String[] args) {\n        String json = "{\\"name\\":\\"ماريا\\",\\"age\\":25,\\"email\\":\\"maria@example.com\\"}";\n        \n        Gson gson = new Gson();\n        User user = gson.fromJson(json, User.class);\n        \n        System.out.println("الاسم: " + user.getName());\n        System.out.println("البريد الإلكتروني: " + user.getEmail());\n    }\n}
\n\n

3. التسلسل: من كائن Java إلى JSON

\n

التسلسل هو العملية العكسية: نأخذ كائن Java ونحوله إلى سلسلة JSON. هذا ضروري، على سبيل المثال

المدونات

توصيات الكتب