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

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

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

ابدأ الدورة

معالجة JSON في Kotlin: نظرة عامة على المكتبات وأمثلة عملية



JSON (JavaScript Object Notation) يظل أحد أكثر التنسيقات شيوعًا لتبادل البيانات بين العميل والخادم. في لغة Kotlin، التي تُستخدم بنشاط لتطوير تطبيقات Android والحلول الخادمية، توجد عدة مكتبات قوية للعمل مع JSON. في هذه المقالة، سنشرح بالتفصيل الأدوات الرئيسية: kotlinx.serialization وGson وMoshi وKlaxon. ستتعلم كيفية تحليل JSON، وتسلسل الكائنات، ومعالجة البيانات بكفاءة.



1. kotlinx.serialization — النهج الأصلي من JetBrains



kotlinx.serialization هي المكتبة الرسمية من مبتكري Kotlin. ميزتها الرئيسية هي التكامل الكامل مع نظام أنواع اللغة ودعم المنصات المتعددة (KMM). للعمل، ستحتاج إلى إضافة المكون الإضافي في 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.Json

@Serializabledata class User(val id: Int, val name: String, val email: String)

fun main() { val jsonString = """{"id":1,"name":"آنا","email":"anna@example.com"}""" // إلغاء التسلسل val user = Json.decodeFromString<User>(jsonString) println("المستخدم: ${user.name}, البريد الإلكتروني: ${user.email}") // التسلسل val output = Json.encodeToString(user) println(output)}


الميزات:

  • لا يتطلب انعكاسًا (يعمل في مرحلة الترجمة).
  • يدعم المسلسلات المخصصة وتعدد الأشكال.
  • مناسب تمامًا لـ Kotlin Multiplatform Mobile.


2. Gson — الكلاسيكية من Google



مكتبة Gson معروفة ببساطتها وانتشارها الواسع. تستخدم الانعكاس، لذا فهي مناسبة للمشاريع التي تكون فيها سرعة الإعداد مهمة. الإضافة:



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


مثال على العمل:



import com.google.gson.Gson

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

fun main() { val gson = Gson() val json = """{"id":101,"title":"لابتوب","price":79990.0}""" // التحليل val product = gson.fromJson(json, Product::class.java) println("المنتج: ${product.title}, السعر: ${product.price}") // التحويل العكسي val newJson = gson.toJson(product) println(newJson)}


الإيجابيات والسلبيات:

  • + الحد الأدنى من الكود للسيناريوهات الأساسية.
  • + دعم التعليقات التوضيحية @SerializedName لرسم خرائط الحقول.
  • - استخدام الانعكاس قد يقلل الأداء.
  • - مشاكل في معالجة null والأنواع العامة.


3. Moshi — البديل الحديث من Square



Moshi تم إنشاؤها كبديل أكثر أمانًا وسرعة لـ Gson. تستخدم أيضًا الانعكاس، ولكنها توفر توليد الكود من خلال التعليق التوضيحي @JsonClass. الإضافة:



dependencies {    implementation("com.squareup.moshi:moshi-kotlin:1.15.0")    ksp("com.squareup.moshi:moshi-kotlin-codegen:1.15.0")}


مثال على الاستخدام مع توليد الكود:



import com.squareup.moshi.JsonClassimport com.squareup.moshi.Moshi

@JsonClass(generateAdapter = true)data class Book(val isbn: String, val author: String, val year: Int)

fun main() { val moshi = Moshi.Builder().build() val adapter = moshi.adapter(Book::class.java) val json = """{"isbn":"978-5-17-123456-7","autho

توصيات