حوّل عينة JSON إلى data class في Kotlin لـ kotlinx.serialization أو Gson أو Moshi
يعمل في متصفحك. لا يُرسل أي شيء تكتبه إلى أي مكان. تم التحقق في 16 أكتوبر 2026.الصق عينة JSON واحصل على data class في Kotlin لـ kotlinx.serialization أو Gson أو Moshi. تصبح الأعداد الصحيحة Int، وLong بعد 2,147,483,647، وأي كسر عشري يجعل الخاصية Double، وقيمة null تجعلها قابلة للقيمة الفارغة، والمفتاح المفقود من بعض الكائنات يصبح T? = null كي تفك المكتبات الثلاث ترميزه.
تُرجمت هذه الصفحة آليًا من الأصل الإنجليزي. لم يراجع أي شخص هذه الترجمة بعد، لذا فالنسخة الإنجليزية هي التي يُعتمد عليها. اقرأ الأصل الإنجليزي
الصق عينة JSON، مثل استجابة API، في المربع الأيسر.
تظهر data class في Kotlin أثناء الكتابة، واحد لكل كائن، بخصائص بصيغة camelCase وتعليق توضيحي حيثما يختلف المفتاح.
اختر kotlinx.serialization أو Gson أو Moshi، وvar بدل val إن احتجت، واسم الصنف الجذر.
اضغط نسخ، أو تنزيل لحفظ Models.kt.
تقرأ Kotlin ملفات JSON إلى data class، ويحتاج كل كائن إلى صنف تحمل خصائصه الأنواع الصحيحة وقابلية القيمة الفارغة الصحيحة وطريقًا للعودة إلى مفاتيحها. يكتب هذا المحوّل تلك الأصناف من عينة، فتتحول استجابة API طويلة إلى Kotlin بلصقة واحدة.
كيف تُختار الأنواع.
| قيمة JSON | نوع Kotlin |
|---|---|
| "text" | String |
| true / false | Boolean |
| 42 (أعداد صحيحة فقط) | Int، أو Long بعد 32 بت |
| 4.5 (ظهر أي كسر عشري) | Double |
| null، ومعها نوع آخر | String?، Int? |
| null فقط، أو أنواع مختلطة | JsonElement? أو Any? |
| [ ... ] | List<...> |
| { } فارغ | JsonObject أو Map<String, Any?> |
| { ... } | data class مستقل |
المفاتيح المفقودة. تُدمج كل كائنات المصفوفة في صنف واحد. والمفتاح الذي يُسقطه بعضها يصبح قابلًا للقيمة الفارغة مع null قيمةً افتراضية، لأن kotlinx.serialization وMoshi يعدّان المفتاح المفقود بلا قيمة افتراضية خطأً. ويرفض kotlinx.serialization أيضًا المفاتيح التي لا خاصية لها، لذا يحصل كل مفتاح في العينة على خاصية.
الأسماء. تُكتب الخصائص بصيغة lowerCamelCase. وحيث يغيّر ذلك المفتاح، كما في user_name إلى userName، تحمل الخاصية @SerialName أو @SerializedName أو @Json(name = ...) حسب المكتبة. وتُكتب الكلمات المحجوزة مثل class بين علامتي backtick. وتُهرَّب علامة الدولار في نصوص التعليقات التوضيحية، لأن Kotlin كانت ستقرؤها قالبًا.
الخيارات. يعطي var بدل val خصائص قابلة للتغيير. ويصبح الكائن الفارغ صنفًا عاديًا، لأن data class تحتاج إلى خاصية واحدة على الأقل. اسم الصنف الجذر Root ما لم تسمّه.
فُحص كل ناتج بقراءة Kotlin مرة أخرى وفك ترميز 9 عينات بالقواعد الافتراضية لـ kotlinx.serialization. لا شيء مما تلصقه يغادر المتصفح.
الصق عينة JSON في المحوّل فتظهر data class بجانبها، واحد لكل كائن. مع kotlinx.serialization أضف الإضافة وفك الترميز بـ Json.decodeFromString<Root>(text)؛ ومع Gson استخدم Gson().fromJson(text, Root::class.java)؛ ومع Moshi أنشئ محوّلًا لـ Root.
المفتاح الذي تُسقطه بعض كائنات المصفوفة يحصل على نوع قابل للقيمة الفارغة وعلى null قيمةً افتراضية. يرفض كل من kotlinx.serialization وMoshi المفتاح المفقود ما لم يكن للخاصية قيمة افتراضية، لذا فالقيمة الافتراضية هي ما يتيح فك ترميز كل كائن في العينة.
kotlinx.serialization هي مكتبة Kotlin نفسها، تعمل على كل منصات Kotlin وتفحص الأنواع عند الترجمة. ويناسب Moshi مع codegen مشاريع Android التي تستخدم Retrofit وOkio أصلًا. أما Gson فهو الأقدم ولا يحتاج إلى إعداد، لكنه يتجاهل أمان null في Kotlin والقيم الافتراضية عند إنشاء الكائنات.
تُكتب الخصائص بصيغة lowerCamelCase، فيصبح user_name بصيغة userName مع احتفاظ @SerialName أو @SerializedName أو @Json(name = ...) بالمفتاح الأصلي. والمفتاح الذي هو كلمة محجوزة في Kotlin، مثل class أو object، يُكتب بين علامتي backtick، فيبقى المفتاح هو الاسم الحقيقي للخاصية.
تصبح الأعداد الصحيحة Int، أو Long عندما تتجاوز قيمة ما 2,147,483,647، ويصبح الحقل Double بمجرد أن تحمل أي قيمة في العينة جزءًا عشريًا. والقيم من أنواع مختلفة تصبح JsonElement? مع kotlinx.serialization، أو Any? مع Gson وMoshi.
لا. يجري التحويل في متصفحك دون أي طلب إلى خادم، ولا يُحفظ JSON، فتبقى استجابات API التي تحمل رموز وصول أو بيانات شخصية على جهازك. أغلق التبويب ولن يبقى شيء.
تتغير المعدلات والقواعد؛ راجع المصدر قبل الاعتماد على أي رقم.
هل ما زلت عالقًا؟ اسأل عن محوّل JSON إلى data class في Kotlin ويمكن لأي شخص يعرف الإجابة أن يجيب. لا حاجة إلى حساب.