جيسون
Gson ، أو Google Gson، هي مكتبة جافا مفتوحة المصدر تقوم بتحويل كائنات جافا إلى JSON (وتقوم بإلغاء تحويلها مرة أخرى إلى جافا).
تاريخ
تم تطوير مكتبة Gson في الأصل لأغراض داخلية في جوجل، وتم إصدار الإصدار 1.0 في 22 مايو 2008، بموجب شروط رخصة أباتشي 2.0.
الاستخدام
تستخدم مكتبة Gson تقنية الانعكاس، مما يعني أنه لا يلزم تعديل الفئات لكي يتم تحويلها إلى سلسلة نصية أو فك تحويلها إلى سلسلة نصية. افتراضيًا، تحتاج الفئة فقط إلى مُنشئ افتراضي مُعرَّف (بدون وسائط)؛ ومع ذلك، يمكن تجاوز هذا الشرط (انظر قسم الميزات ).
يوضح المثال التالي الاستخدام الأساسي لـ Gson عند تسلسل كائن نموذجي:
مثال على الحزمة ؛فئة عامة سيارة {مُصنِّع السلاسل العامة ؛public String model ;سعة عامة مضاعفة ؛حادث منطقي عام ؛سيارة عامة () {}دالة عامة للسيارة ( سلسلة نصية : الشركة المصنعة ، سلسلة نصية : الطراز ، عدد عشري: السعة ، قيمة منطقية: حادث ) {this.manufacturer = manufacturer ;this.model = model ;هذه السعة = السعة ؛هذا . حادث = حادث ؛}@تجاوزpublic String toString () {return ( "الشركة المصنعة: " + manufacturer + ", " + "الطراز: " + model + ", " + "السعة: " + capacity + ", " + "الحادث: " + accident );}}مثال على الحزمة ؛public class Person {public String name ;public String surname ;سيارات عامة [] سيارات ؛public int phone ;عام عابر int العمر ؛الشخص العام () {}دالة عامة Person ( سلسلة نصية name ، سلسلة نصية surname ، عدد صحيح phone ، عدد صحيح age ، سيارة [] cars ) {this.name = name ;this.name = surname ;this.cars = cars ;this.phone = phone ;this.age = age ;}@تجاوزpublic String toString () {StringBuilder sb = new StringBuilder ();sb.append ( "الاسم: " ) .append ( الاسم ). append ( " " ) .append ( اللقب ). append ( "\n " ) ;sb.append ( "Phone: " ) .append ( phone ) .append ( "\n " ) ;sb.append ( "العمر: " ) .append ( العمر ) . append ( "\n" ) ;int i = 0 ;for ( Car car : cars ) {i ++ ;sb.append ( "Car" ). append ( i ) .append ( ":" ) . append ( car ) .append ( "\n" ) ;}return sb.toString ( ) ;}}الحزمة الرئيسية ؛استيراد مثال.سيارة ؛استيراد مثال.شخص ؛استيراد com.google.gson.Gson ;استيراد com.google.gson.GsonBuilder ;public class Main {public static void main ( String [] args ) {// تفعيل الطباعة المنسقة لأغراض العرض التوضيحي// يمكن أيضًا إنشاء نسخة مباشرة باستخدام `new Gson()`؛ سيؤدي ذلك إلى إنتاج JSON مضغوط.Gson gson = new GsonBuilder (). setPrettyPrinting (). create ();سيارة أودي = سيارة جديدة ( "أودي" ، "A4" ، 1.8 ، خطأ )؛سيارة سكودا = سيارة جديدة ( "سكودا" ، "أوكتافيا" ، 2.0 ، صحيح )؛Car [] cars = { audi , skoda };Person johnDoe = new Person ( "John" , "Doe" , 2025550191 , 35 , cars );System.out.println ( gson.toJson ( johnDoe ) ) ;}}Mainسيؤدي استدعاء الكود الخاص بالفئة المذكورة أعلاه إلى إخراج JSON التالي:

{ "name" : "John" , "surname" : "Doe" , "cars" : [ { "manufacturer" : "Audi" , "model" : "A4" , "capacity" : 1.8 , "accident" : false }, { "manufacturer" : "Škoda" , "model" : "Octavia" , "capacity" : 2.0 , "accident" : true } ], "phone" : 2025550191 }بما أن حقل الشخص ageمُصنف على أنه مؤقت ، فإنه لا يتم تضمينه في المخرجات.
الحزمة الرئيسية ؛استيراد مثال.شخص ؛ استيراد com.google.gson.Gson ؛public class Main { public static void main ( String [] args ) { Gson gson = new Gson (); String json = "{\"name\":\"John\",\"surname\":\"Doe\",\"cars\":[{\"manufacturer\":\"Audi\",\"model\":\"A4\"," + "\"capacity\":1.8,\"accident\":false},{\"manufacturer\":\"Škoda\",\"model\":\"Octavia\",\"capacity\"" + ":2.0,\"accident\":true}],\"phone\":2025550191}" ; Person johnDoe = gson . fromJson ( json , Person . class ); System . out . println ( johnDoe . toString ()); } }لفك تشفير المخرجات الناتجة عن المثال الأخير، يمكنك تنفيذ الكود أعلاه، والذي ينتج عنه المخرجات التالية:
الاسم: جون دو، رقم الهاتف: 2025550191، العمر: 0، السيارة 1: الصانع: أودي، الموديل: A4، السعة: 1.8، حادث: لا، السيارة 2: الصانع: سكودا، الموديل: أوكتافيا، السعة: 2.0، حادث: نعميوضح هذا كيفية استخدام Gson مع نظام وحدات منصة Java للمثال أعلاه:
module GsonExample { requires com.google.gson ; // فتح الحزمة المُعلنة في المثال أعلاه للسماح لـ Gson باستخدام الانعكاس على الفئات // داخل الحزمة ( وأيضًا الوصول إلى الحقول غير العامة ) opens example to com.google.gson ; }للاطلاع على أمثلة أكثر شمولاً، راجع دليل استخدام Gson على مستودع GitHub الخاص بهم .
سمات
- يمكن لـ Gson التعامل مع المجموعات والأنواع العامة والفئات المتداخلة (بما في ذلك الفئات الداخلية ، والتي لا يمكن القيام بها افتراضيًا).
- عند إلغاء التسلسل، يقوم Gson بالتنقل في شجرة أنواع الكائن الذي يتم إلغاء تسلسله، مما يعني أنه يتجاهل الحقول الإضافية الموجودة في مدخلات JSON.
- بإمكان المستخدم:
- اكتب برنامج تسلسل و/أو برنامج إلغاء تسلسل مخصص بحيث يمكنهم التحكم في العملية بأكملها، وحتى إلغاء تسلسل مثيلات الفئات التي لا يمكن الوصول إلى شفرة المصدر الخاصة بها.
- اكتب InstanceCreator، الذي يسمح لهم بإلغاء تسلسل مثيلات الفئات بدون مُنشئ بدون وسائط مُعرّف.
- يتميز Gson بقابلية عالية للتخصيص، حيث يمكنك تحديد ما يلي:
- طباعة مضغوطة/جميلة (سواء كنت تريد مخرجات مضغوطة أو قابلة للقراءة)
- كيفية التعامل مع حقول الكائنات الفارغة - بشكل افتراضي، لا تظهر هذه الحقول في المخرجات.
- استبعاد الحقول - قواعد تحديد الحقول التي يُراد استبعادها من عملية إلغاء التسلسل
- كيفية تحويل أسماء حقول جافا
مراجع
- ↑ "الإصدار 2.14.0" . 23 أبريل 2026. تم الاطلاع عليه بتاريخ 24 أبريل 2026 .
- جينكوف، جاكوب. "جيسون - جيسون" . دروس.جينكوف.كوم . تم الاسترجاع بتاريخ 28-12-2023 .
- جيسون ، جوجل، 28-12-2023 ، تم الاطلاع عليه في 28-12-2023
للمزيد من القراءة
روابط خارجية
- مكتبات لغة البرمجة جافا
- JSON
- برنامج جوجل
- برنامج 2008
