العمل مع JSON في جافا: التحليل والتسلسل
JSON (JavaScript Object Notation) هو تنسيق خفيف لتبادل البيانات يُستخدم على نطاق واسع في تطبيقات الويب الحديثة وواجهات برمجة التطبيقات والخدمات المصغرة. في جافا، أصبح العمل مع JSON جزءًا لا يتجزأ من التطوير، سواء كان ذلك لتحليل استجابات الخادم أو تسلسل الكائنات للتخزين أو نقل البيانات بين مكونات النظام. في هذا المقال، سندرس بالتفصيل كيفية إجراء تحليل JSON وتسلسله في جافا باستخدام مكتبتين شائعتين: Gson من Google وJackson.
1. ما هو JSON ولماذا هو مطلوب في جافا؟
JSON هو تنسيق نصي يعتمد على أزواج المفاتيح والقيم والقوائم المرتبة. يمكن قراءته بسهولة بواسطة البشر والآلات على حد سواء، مما يجعله مثاليًا لنقل البيانات بين الخادم والعميل. في جافا، يُستخدم JSON من أجل:
- تبادل البيانات عبر REST API (مثل استقبال بيانات من خادم أو إرسال نموذج).
- ملفات التكوين — تستخدم العديد من الأطر العمل JSON لتكوين التطبيق.
- تسلسل الكائنات — تحويل كائنات جافا إلى سلسلة JSON لحفظها في ملف أو قاعدة بيانات.
- إزالة التسلسل — استعادة كائنات جافا من سلسلة JSON.
لم يكن لدى جافا دعم مدمج لـ JSON حتى الإصدار 9 (عندما تم تقديم وحدة java.json)، لذلك يستخدم المطورون غالبًا مكتبات الطرف الثالث مثل Gson و Jackson. دعنا نلقي نظرة على كلتيهما.
2. تحليل JSON باستخدام Gson
Gson هي مكتبة خفيفة من Google تسمح لك بتحويل JSON بسهولة إلى كائنات جافا والعكس. وهي بسيطة الاستخدام ولا تتطلب تعليقات توضيحية إضافية للسيناريوهات الأساسية.
2.1. تثبيت Gson
أضف التبعية إلى ملف pom.xml الخاص بك (Maven):
<dependency> <groupId>com.google.code.gson</groupId> <artifactId>gson</artifactId> <version>2.10.1</version></dependency>إذا كنت تستخدم Gradle:
implementation 'com.google.code.gson:gson:2.10.1'2.2. تحليل JSON إلى كائن جافا (إزالة التسلسل)
لنفترض أن لدينا سلسلة JSON تحتوي على معلومات مستخدم:
{ "name": "Ivan Petrov", "age": 30, "email": "ivan@example.com"}لنقم بإنشاء فئة User:
public class User { private String name; private int age; private String email;
// Getters and Setters (required for Gson) public String getName() { return name; } public void setName(String name) { this.name = name; } public int getAge() { return age; } public void setAge(int age) { this.age = age; } public String getEmail() { return email; } public void setEmail(String email) { this.email = email; }}الآن لنقم بتحليل JSON:
import com.google.gson.Gson;
public class Main { public static void main(String[] args) { String jsonString = "{\\"name\\":\\"Ivan Petrov\\",\\"age\\":30,\\"email\\":\\"ivan@example.com\\"}"; Gson gson = new Gson(); User user = gson.fromJson(jsonString, User.class); System.out.println("Name: " + user.getName()); System.out.println("Age: " + user.getAge()); }}المخرجات:
Name: Ivan PetrovAge: 302.3. تسلسل كائن جافا إلى JSON
العملية العكسية — تحويل كائن إلى JSON:
User user = new User();user.setName("Maria Smirnova");user.setAge(25);user.setEmail("maria@example.com");
Gson gson = new Gson();String json = gson.toJson(user);System.out.println(json);النتيجة:
{"name":"Maria S