مكتبة kotlinx.serialization لمعالجة JSON في Kotlin

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

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

ابدأ الدورة

ما هو kotlinx.serialization؟

Kotlinx.serialization هي مكتبة Kotlin رسمية لتسلسل وإلغاء تسلسل البيانات، بما في ذلك تنسيق JSON. توفر طريقة قوية وآمنة من حيث النوع لتحويل كائنات Kotlin إلى JSON والعكس، دون استخدام الانعكاس (reflection) ومع دعم المنصات المتعددة (JVM, JS, Native).

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

في التطوير الحديث باستخدام Kotlin (Android، تطبيقات الخادم على Ktor، المشاريع متعددة المنصات)، يعد العمل مع JSON مهمة إلزامية: تبادل البيانات مع REST API، ملفات التهيئة، تخزين البيانات. تعالجها kotlinx.serialization بكفاءة وأمان وبأقل قدر من الكود التكراري (boilerplate).

التثبيت

لاستخدام المكتبة، أضف البرنامج المساعد (plugin) إلى ملف build.gradle.kts:

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

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

بالنسبة لـ Maven، أضف التبعية والبرنامج المساعد kotlin-maven-plugin مع إعدادات serialization.

الوظائف الأساسية

  • @Serializable — تعليق توضيحي للفئات التي تحتاج إلى التسلسل.
  • Json.encodeToString() — تحويل كائن إلى سلسلة JSON.
  • Json.decodeFromString() — تحليل سلسلة JSON إلى كائن.
  • JsonObject / JsonElement — العمل الديناميكي مع JSON دون إنشاء DTO.
  • @Transient, @Required, @SerialName — ضبط دقيق للحقول.
  • JsonConfiguration — إعدادات التنسيق (prettyPrint, ignoreUnknownKeys).

مثال على كود Kotlin

import kotlinx.serialization.*import kotlinx.serialization.json.*

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

fun main() { val user = User("Алиса", 30) // التسلسل val jsonString = Json.encodeToString(user) println(jsonString) // {"name":"Алиса","age":30} // إلغاء التسلسل val decodedUser = Json.decodeFromString<User>(jsonString) println(decodedUser) // User(name=Алиса, age=30) // العمل مع JSON الديناميكي val jsonObject = Json.parseToJsonElement("""{"city":"Москва","zip":101000}""").jsonObject println(jsonObject["city"]) // "Москва"}

متى تستخدم

المكتبة مثالية لـ:

  • تطبيقات Android (Retrofit + kotlinx.serialization).
  • مشاريع الخادم على Ktor.
  • التطبيقات متعددة المنصات (KMP).
  • أي مشاريع تحتاج إلى عمل سريع وآمن مع JSON بدون انعكاس (reflection).

تتفوق على Gson و Jackson من حيث الأداء وأمان الأنواع، خاصة في مشاريع Kotlin.

توصيات