معالجة JSON في Kotlin: المكتبات وأمثلة الكود

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

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

ابدأ الدورة

معالجة JSON في Kotlin: المكتبات والأدوات وأمثلة الكود



JSON (JavaScript Object Notation) هو أحد أكثر تنسيقات تبادل البيانات شيوعًا في تطوير الويب الحديث. عند إنشاء تطبيقات بلغة Kotlin، سواء كانت Android أو خلفية أو سطح مكتب، يكاد يكون من الضروري دائمًا تحليل وإنشاء JSON. في هذه المقالة، سنستعرض بالتفصيل المكتبات الرئيسية للعمل مع JSON في Kotlin، وإمكانياتها، ومزاياها، وسنقدم أمثلة عملية على الكود.



لماذا نحتاج إلى معالجة منفصلة لـ JSON في Kotlin؟



Kotlin هي لغة مكتوبة بشكل ثابت تعمل فوق JVM (بالإضافة إلى Native و JS). على عكس اللغات الديناميكية، حيث يمكن تحويل JSON إلى قاموس "أثناء التنقل"، من المعتاد في Kotlin العمل مع كائنات مكتوبة. هذا يزيد من موثوقية الكود ويسمح لبيئة التطوير المتكاملة (IDE) باقتراح الحقول تلقائيًا. لتحويل JSON إلى كائنات Kotlin (فئات البيانات) والعكس، يتم استخدام مكتبات التسلسل/إلغاء التسلسل.



المكتبات الرئيسية لـ JSON في Kotlin



دعنا نلقي نظرة على المكتبات الثلاث الأكثر شيوعًا: kotlinx.serialization (الموصى بها من JetBrains)، و Gson (من Google)، و Moshi (من Square).



1. kotlinx.serialization



هذه هي المكتبة الرسمية للتسلسل في Kotlin، والتي تدعمها JetBrains. تعمل على أساس متعدد المنصات (JVM، Native، JS) ولا تستخدم الانعكاس، مما يوفر أداءً عاليًا وأمانًا للأنواع.



التثبيت: أضف البرنامج المساعد والتبعية في build.gradle.kts:



plugins {    kotlin("plugin.serialization") version "1.9.22"}

dependencies { implementation("org.jetbrains.kotlinx:kotlinx-serialization-json:1.6.2")}


مثال على الاستخدام:



import kotlinx.serialization.Serializableimport kotlinx.serialization.json.Jsonimport kotlinx.serialization.encodeToStringimport kotlinx.serialization.decodeFromString

@Serializabledata class User(val name: String, val age: Int, val email: String? = null)

fun main() { val json = Json { prettyPrint = true; ignoreUnknownKeys = true }

// التسلسل (كائن -> JSON) val user = User("أليكسي", 30, "alex@example.com") val jsonString = json.encodeToString(user) println(jsonString)

// إلغاء التسلسل (JSON -> كائن) val input = """{"name":"ماريا","age":25}""" val parsedUser = json.decodeFromString<User>(input) println(parsedUser)}


الميزات:

  • دعم الحقول القابلة للقيمة null (مثل email في المثال).
  • الإعدادات عبر DSL: prettyPrint، ignoreUnknownKeys وغيرها.
  • العمل مع enum، والفئات المختومة (sealed classes)، والكائنات المتداخلة.
  • تعدد المنصات - كود واحد لنظامي Android و iOS والويب.


2. Gson



Gson هي مكتبة كلاسيكية من Google، تستخدم على نطاق واسع في عالم Java. تعمل أيضًا في Kotlin، ولكنها تتطلب الحذر مع الأنواع القابلة للقيمة null وفئات البيانات.



التثبيت:



dependencies {    implementation("com.google.code.gson:gson:2.10.1")}


مثال:



import com.google.gson.Gsonimport com.google.gson.GsonBuilder

data class Product(val id: Int, val title: String, val price: Double)

fun main() { val gson: Gson = GsonBuilder().setPrettyPrinting().create()

// التسلسل val product = Product(1, "حاسوب محمول", 89999.99) val json = gson.toJson(product) println(json)

// إلغاء التسلسل val jsonString = """{"id":2,"title":"فأرة","price":1500.50}""" val parsed = gson.fromJson(jsonString, Product::class.java) println(parsed)}


هام: يستخدم Gson الانعكاس، لذلك بالنسبة لفئات البيانات في Kotlin قد يتطلب الأمر @JvmOverloads أو إعداد

توصيات