العمل مع الملفات JSON في جافا
ما هو 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. لا تنسَ ترك تعليق أو مشاركة هذا الدرس مع أصدقائك على وسائل التواصل الاجتماعي إذا وجدته مفيدًا!
اترك تعليقاً