تحويل JSON إلى Kotlin data class

مفيدة في تطبيقات Android وخوادم Ktor، إذ تكتب data class لكل كائن جاهزة للقراءة عبر Json.decodeFromString.

جارٍ تحميل الأداة…

المعالجة والخصوصية: تُحسب النتيجة داخل متصفحك ولا تُرسل بياناتك إلى أي خادم.

طريقة الاستخدام

  1. أدخل نص JSON واسم النوع الرئيسي.
  2. تظهر النتيجة فورًا وتتحدّث مع كل تعديل.
  3. انسخ النتيجة، أو انسخ رابطًا يحفظ القيم نفسها لمشاركتها.

طريقة الحساب

String وInt أو Long وDouble وBoolean وList<T> وJsonElement، وdata class مع @Serializable لكل كائن. @SerialName يضاف عند اختلاف الاسم عن المفتاح، وnull يجعل النوع nullable، والمفتاح الغائب في بعض العناصر يأخذ القيمة الافتراضية null.

مثال

المدخلات: اسم النوع الرئيسي = Root. النتيجة: الكود الناتج: import kotlinx.serialization.SerialName import kotlinx.serialization.Serializable @Serializable data class Root( val id: Int, val name: String, val email: String, @SerialName("is_active") val isActive: Boolean, val balance: Double, val tags: List<String>, val address: Address, val orders: List<Order>, ) @Serializable data class Address( val city: String, @SerialName("postal_code") val postalCode: String, ) @Serializable data class Order( @SerialName("order_id") val orderId: String, val total: Double, val coupon: String?, )، عدد الأنواع: 3، عدد الحقول: 13.

{
  "id": 1024,
  "name": "Sara Ahmed",
  "email": "sara@example.com",
  "is_active": true,
  "balance": 1520.75,
  "tags": ["vip", "riyadh"],
  "address": { "city": "Riyadh", "postal_code": "12211" },
  "orders": [
    { "order_id": "A-1", "total": 99.5, "coupon": "EID10" },
    { "order_id": "A-2", "total": 120, "coupon": null }
  ]
}
import kotlinx.serialization.SerialName
import kotlinx.serialization.Serializable

@Serializable
data class Root(
    val id: Int,
    val name: String,
    val email: String,
    @SerialName("is_active")
    val isActive: Boolean,
    val balance: Double,
    val tags: List<String>,
    val address: Address,
    val orders: List<Order>,
)

@Serializable
data class Address(
    val city: String,
    @SerialName("postal_code")
    val postalCode: String,
)

@Serializable
data class Order(
    @SerialName("order_id")
    val orderId: String,
    val total: Double,
    val coupon: String?,
)

الحدود والملاحظات

  • يحتاج إضافة kotlinx.serialization (الإضافة plugin ومكتبة json) إلى المشروع.
  • مع Gson أو Moshi استبدل @SerialName بالوسم الخاص بالمكتبة.

أسئلة شائعة عن هذه الأداة

لماذا أخذ بعض الحقول = null؟

لأن kotlinx.serialization يرفض المفتاح الغائب ما لم تكن له قيمة افتراضية، فتعطى null للمفاتيح التي غابت في بعض العناصر.

متى يستخدم Long بدل Int؟

عندما يظهر في العينة عدد أكبر من 2147483647، وهو الحد الأعلى لنوع Int.

هل ترسل بياناتي إلى خادم؟

لا، التحويل يعمل داخل متصفحك ولا يغادر نص JSON جهازك.