العمل مع الملفات JSON في جافا

Amine
30/09/2024

ما هو JSON؟

JSON (JavaScript Object Notation) هو تنسيق شائع يُستخدم لتمثيل البيانات بشكل منظم وسهل القراءة. يُستخدم JSON في كثير من التطبيقات كوسيلة لتبادل البيانات بين الخادم (Server) والعميل (Client)، وفي تخزين البيانات. يتميز JSON بأنه خفيف الوزن، ويسهل تحليله ومعالجته في العديد من لغات البرمجة، بما في ذلك جافا.

لماذا نستخدم JSON في جافا؟

يُعد JSON شائعًا في التطبيقات التي تعتمد على الويب والتطبيقات الموزعة (Distributed Applications). يتم استخدامه عادةً لتبادل البيانات بين الواجهات الأمامية والخلفية (Frontend & Backend)، ولتخزين البيانات في الملفات أو قواعد البيانات. باستخدام مكتبات جافا مثل Gson و Jackson، يمكنك بسهولة قراءة وكتابة وتحليل بيانات JSON.

كيفية التعامل مع JSON في جافا باستخدام مكتبة Gson

Gson هي مكتبة مفتوحة المصدر طورتها جوجل، تُستخدم لتحويل كائنات جافا إلى JSON والعكس. في هذا الجزء، سنستعرض كيفية استخدام Gson لقراءة وكتابة وتحليل ملفات JSON.

إضافة مكتبة Gson إلى المشروع

أولاً، تأكد من إضافة مكتبة Gson إلى مشروعك باستخدام Gradle أو Maven. إذا كنت تستخدم Gradle، أضف التالي إلى ملف build.gradle:

implementation 'com.google.code.gson:gson:2.8.9'

إذا كنت تستخدم Maven، أضف التالي إلى ملف pom.xml:

<dependency>
   <groupId>com.google.code.gson</groupId>
   <artifactId>gson</artifactId>
   <version>2.8.9</version>
</dependency>

كيفية إنشاء JSON من كائن في جافا باستخدام Gson

لتحويل كائن جافا إلى JSON، يمكنك استخدام الفئة Gson وتحديد الكائن الذي تريد تحويله. مثال:

import com.google.gson.Gson;

class Student {
   String name;
   int age;

   Student(String name, int age) {
      this.name = name;
      this.age = age;
   }
}

public class Main {
   public static void main(String[] args) {
      Student student = new Student("أحمد", 25);
      Gson gson = new Gson();

      // تحويل الكائن إلى JSON
      String json = gson.toJson(student);
      System.out.println("JSON: " + json);
   }
}

في هذا المثال، قمنا بإنشاء كائن Student، ثم استخدمنا Gson لتحويله إلى سلسلة JSON وطباعة النتيجة.

كيفية قراءة JSON وتحويله إلى كائن في جافا باستخدام Gson

يمكنك تحويل سلسلة JSON إلى كائن جافا باستخدام الدالة fromJson وتحديد نوع الكائن المستهدف. مثال:

import com.google.gson.Gson;

class Student {
   String name;
   int age;

   Student(String name, int age) {
      this.name = name;
      this.age = age;
   }
}

public class Main {
   public static void main(String[] args) {
      String json = "{\"name\":\"أحمد\",\"age\":25}";
      Gson gson = new Gson();

      // تحويل JSON إلى كائن جافا
      Student student = gson.fromJson(json, Student.class);
      System.out.println("الاسم: " + student.name);
      System.out.println("العمر: " + student.age);
   }
}

في هذا المثال، قمنا بتحويل سلسلة JSON إلى كائن Student وطبعنا الخصائص الخاصة به.

كيفية التعامل مع JSON في جافا باستخدام مكتبة Jackson

Jackson هي مكتبة قوية تُستخدم لتحليل وتحويل بيانات JSON في جافا. تعتبر Jackson خيارًا ممتازًا للتعامل مع JSON في التطبيقات الكبيرة نظرًا لميزاتها المتقدمة. في هذا الجزء، سنستعرض كيفية استخدام Jackson لقراءة وكتابة JSON.

إضافة مكتبة Jackson إلى المشروع

إذا كنت تستخدم Gradle، أضف التالي إلى ملف build.gradle:

implementation 'com.fasterxml.jackson.core:jackson-databind:2.13.1'

إذا كنت تستخدم Maven، أضف التالي إلى ملف pom.xml:

<dependency>
   <groupId>com.fasterxml.jackson.core</groupId>
   <artifactId>jackson-databind</artifactId>
   <version>2.13.1</version>
</dependency>

كيفية إنشاء JSON من كائن في جافا باستخدام Jackson

لتحويل كائن جافا إلى JSON باستخدام Jackson، يمكنك استخدام الفئة ObjectMapper وتحديد الكائن الذي تريد تحويله. مثال:

import com.fasterxml.jackson.databind.ObjectMapper;

class Student {
   public String name;
   public int age;

   Student() {
   }

   Student(String name, int age) {
      this.name = name;
      this.age = age;
   }
}

public class Main {
   public static void main(String[] args) {
      try {
         Student student = new Student("سارة", 22);
         ObjectMapper mapper = new ObjectMapper();

         // تحويل الكائن إلى JSON
         String json = mapper.writeValueAsString(student);
         System.out.println("JSON: " + json);
      } catch (Exception e) {
         e.printStackTrace();
      }
   }
}

في هذا المثال، قمنا بإنشاء كائن Student، ثم استخدمنا ObjectMapper لتحويله إلى سلسلة JSON.

كيفية قراءة JSON وتحويله إلى كائن في جافا باستخدام Jackson

يمكنك تحويل سلسلة JSON إلى كائن جافا باستخدام الدالة readValue وتحديد نوع الكائن المستهدف. مثال:

import com.fasterxml.jackson.databind.ObjectMapper;

class Student {
   public String name;
   public int age;

   Student() {
   }

   Student(String name, int age) {
      this.name = name;
      this.age = age;
   }
}

public class Main {
   public static void main(String[] args) {
      String json = "{\"name\":\"سارة\",\"age\":22}";
      ObjectMapper mapper = new ObjectMapper();

      try {
         // تحويل JSON إلى كائن جافا
         Student student = mapper.readValue(json, Student.class);
         System.out.println("الاسم: " + student.name);
         System.out.println("العمر: " + student.age);
      } catch (Exception e) {
         e.printStackTrace();
      }
   }
}

في هذا المثال، قمنا بتحويل سلسلة JSON إلى كائن Student باستخدام ObjectMapper.

مقارنة بين مكتبة Gson و Jackson

كلا المكتبتين تُستخدمان لتحليل وتحويل بيانات JSON، لكن هناك بعض الاختلافات بينهما:

  • Gson: بسيطة وسهلة الاستخدام، مناسبة للمشاريع الصغيرة والمتوسطة. تعتمد على تحويل الكائنات بدون تكوينات إضافية.
  • Jackson: قوية ومرنة، تدعم تحويل بيانات JSON المعقدة. تُعد الأفضل للاستخدام في المشاريع الكبيرة أو المشاريع التي تحتاج إلى تكوينات متقدمة.

تمرين (مستوى متوسط): إنشاء وإدارة ملف JSON للطلاب

في هذا التمرين، سنقوم بإنشاء برنامج يقرأ بيانات الطلاب من ملف JSON، ثم يطبع البيانات، ويعدل عمر طالب معين، ثم يُعيد كتابة البيانات إلى الملف.

المتطلبات:

  • إنشاء ملف JSON باسم students.json يحتوي على بيانات للطلاب (الاسم والعمر).
  • قراءة البيانات من الملف باستخدام مكتبة Gson أو Jackson.
  • تعديل عمر طالب معين، ثم إعادة كتابة البيانات إلى الملف.

الكود:

import com.google.gson.Gson;
import com.google.gson.reflect.TypeToken;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
import java.lang.reflect.Type;
import java.util.List;

class Student {
   String name;
   int age;

   Student(String name, int age) {
      this.name = name;
      this.age = age;
   }
}

public class Main {
   public static void main(String[] args) {
      Gson gson = new Gson();
      String filePath = "students.json";

      try {
         // قراءة البيانات من ملف JSON
         FileReader reader = new FileReader(filePath);
         Type studentListType = new TypeToken>() {}.getType();
         List students = gson.fromJson(reader, studentListType);
         reader.close();

         // تعديل عمر الطالب "أحمد"
         for (Student student : students) {
            if (student.name.equals("أحمد")) {
               student.age = 30;  // تعديل العمر
            }
         }

         // كتابة البيانات المعدلة إلى الملف
         FileWriter writer = new FileWriter(filePath);
         gson.toJson(students, writer);
         writer.close();

         System.out.println("تم تعديل البيانات وإعادة كتابتها إلى الملف بنجاح.");
      } catch (IOException e) {
         System.out.println("حدث خطأ أثناء قراءة أو كتابة الملف: " + e.getMessage());
      }
   }
}

شرح الكود:

  • قمنا بقراءة بيانات الطلاب من ملف students.json باستخدام مكتبة Gson، وحولنا البيانات إلى قائمة من الكائنات Student.
  • قمنا بتعديل عمر الطالب “أحمد”، ثم كتبنا البيانات المعدلة مرة أخرى إلى الملف.

جرّب تنفيذ هذا البرنامج بنفسك، وشارك نتيجتك معنا في التعليقات! إذا واجهتك أي مشكلة أو كان لديك سؤال، لا تتردد في طرحه.

خاتمة

في هذا الدرس، تعرفنا على كيفية التعامل مع ملفات JSON في جافا باستخدام مكتبتين شهيرتين: Gson و Jackson. كما تعلمنا كيفية قراءة وكتابة وتحليل بيانات JSON في برامج جافا. نوصي بممارسة التمرين المقدم لاكتساب المزيد من الخبرة في التعامل مع ملفات JSON. لا تنسَ ترك تعليق أو مشاركة هذا الدرس مع أصدقائك على وسائل التواصل الاجتماعي إذا وجدته مفيدًا!

التعليقات

اترك تعليقاً