একটি JSON নমুনাকে kotlinx.serialization, Gson বা Moshi-এর জন্য Kotlin ডেটা ক্লাসে রূপান্তর করুন
আপনার ব্রাউজারে চলে। আপনি যা লেখেন তা কোথাও পাঠানো হয় না। যাচাই করা হয়েছে 16 অক্টোবর, 2026।একটি JSON নমুনা পেস্ট করুন আর kotlinx.serialization, Gson বা Moshi-এর জন্য Kotlin ডেটা ক্লাস পান। পূর্ণসংখ্যা হয় Int, 2,147,483,647-এর বেশি হলে Long, যেকোনো দশমিক একটি প্রপার্টিকে Double করে, একটি null মান একে nullable করে, আর কিছু অবজেক্টে অনুপস্থিত একটি কী হয় T? = null, যাতে 3টি লাইব্রেরিই এটি ডিকোড করতে পারে।
এই পৃষ্ঠাটি ইংরেজি মূল লেখা থেকে যন্ত্রের সাহায্যে অনুবাদ করা হয়েছে। এই অনুবাদটি এখনও কোনো মানুষ পর্যালোচনা করেননি, তাই ইংরেজি সংস্করণটিকেই নির্ভরযোগ্য ধরুন। ইংরেজি মূল লেখাটি পড়ুন
বাঁ দিকের বাক্সে একটি JSON নমুনা পেস্ট করুন, যেমন একটি API রেসপন্স।
লেখার সাথে সাথে Kotlin ডেটা ক্লাস দেখা যায়, প্রতিটি অবজেক্টের জন্য একটি, camelCase প্রপার্টি এবং যেখানে কী আলাদা সেখানে একটি অ্যানোটেশনসহ।
kotlinx.serialization, Gson বা Moshi বেছে নিন, দরকার হলে val-এর বদলে var, আর রুট ক্লাসের নাম।
কপি করুন চাপুন, অথবা Models.kt সংরক্ষণ করতে ডাউনলোড চাপুন।
Kotlin JSON-কে ডেটা ক্লাসে পড়ে, আর প্রতিটি অবজেক্টের জন্য এমন একটি ক্লাস দরকার যার প্রপার্টিগুলোর টাইপ সঠিক, null-যোগ্যতা সঠিক এবং নিজের কী-তে ফেরার একটি উপায় আছে। এই কনভার্টার একটি নমুনা থেকে সেই ক্লাসগুলো লেখে, তাই একটি লম্বা API রেসপন্স এক পেস্টেই Kotlin হয়ে যায়।
টাইপ কীভাবে বেছে নেওয়া হয়।
| JSON মান | Kotlin টাইপ |
|---|---|
| "text" | String |
| true / false | Boolean |
| 42 (শুধু পূর্ণসংখ্যা) | Int, অথবা 32 বিটের বেশি হলে Long |
| 4.5 (কোনো দশমিক দেখা গেলে) | Double |
| null, সাথে আরেকটি টাইপ | String?, Int? |
| শুধু null, বা মিশ্র ধরন | JsonElement? বা Any? |
| [ ... ] | List<...> |
| { } ফাঁকা | JsonObject বা Map<String, Any?> |
| { ... } | নিজস্ব একটি ডেটা ক্লাস |
অনুপস্থিত কী। একটি অ্যারের সব অবজেক্ট মিলে একটি ক্লাস হয়। যে কী কিছু অবজেক্টে বাদ থাকে, সেটি null ডিফল্টসহ nullable হয়, কারণ kotlinx.serialization ও Moshi ডিফল্ট ছাড়া অনুপস্থিত কী-কে ত্রুটি ধরে। kotlinx.serialization এমন কী-ও প্রত্যাখ্যান করে যার জন্য কোনো প্রপার্টি নেই, তাই নমুনার প্রতিটি কী একটি করে প্রপার্টি পায়।
নাম। প্রপার্টিগুলো lowerCamelCase-এ থাকে। এতে কী বদলে গেলে, যেমন user_name থেকে userName, লাইব্রেরি অনুযায়ী প্রপার্টিটি @SerialName, @SerializedName বা @Json(name = ...) বহন করে। class-এর মতো কীওয়ার্ড ব্যাকটিকের মধ্যে লেখা হয়। অ্যানোটেশনের স্ট্রিংয়ে ডলার চিহ্ন এস্কেপ করা হয়, কারণ নইলে Kotlin এটিকে টেমপ্লেট হিসেবে পড়ত।
অপশন। val-এর বদলে var পরিবর্তনযোগ্য প্রপার্টি দেয়। একটি ফাঁকা অবজেক্ট সাধারণ ক্লাস হয়, কারণ একটি ডেটা ক্লাসে অন্তত একটি প্রপার্টি লাগে। আপনি নাম না দিলে রুট ক্লাসের নাম Root।
প্রতিটি আউটপুট যাচাই করা হয়েছে Kotlin আবার পড়ে এবং kotlinx.serialization-এর ডিফল্ট নিয়মে 9টি নমুনা ডিকোড করে। আপনি যা পেস্ট করেন তার কিছুই ব্রাউজারের বাইরে যায় না।
কনভার্টারে একটি JSON নমুনা পেস্ট করুন, পাশেই ডেটা ক্লাস দেখা যাবে, প্রতিটি অবজেক্টের জন্য একটি। kotlinx.serialization হলে প্লাগইন যোগ করে Json.decodeFromString<Root>(text) দিয়ে ডিকোড করুন; Gson হলে Gson().fromJson(text, Root::class.java) ব্যবহার করুন; Moshi হলে Root-এর জন্য একটি অ্যাডাপ্টার তৈরি করুন।
যে কী অ্যারের কিছু অবজেক্টে বাদ থাকে, সেটি একটি nullable টাইপ এবং ডিফল্ট হিসেবে null পায়। প্রপার্টির ডিফল্ট না থাকলে kotlinx.serialization ও Moshi দুটোই অনুপস্থিত কী প্রত্যাখ্যান করে, তাই এই ডিফল্টই নমুনার প্রতিটি অবজেক্টকে ডিকোড হতে দেয়।
kotlinx.serialization হলো Kotlin-এর নিজস্ব, প্রতিটি Kotlin প্ল্যাটফর্মে চলে এবং কম্পাইলের সময় টাইপ যাচাই করে। codegen সহ Moshi সেই Android প্রজেক্টের জন্য উপযুক্ত যেগুলো আগে থেকেই Retrofit ও Okio ব্যবহার করে। Gson সবচেয়ে পুরোনো এবং কোনো সেটআপ লাগে না, তবে অবজেক্ট তৈরির সময় এটি Kotlin-এর null নিরাপত্তা ও ডিফল্ট মান উপেক্ষা করে।
প্রপার্টিগুলো lowerCamelCase-এ থাকে, তাই user_name হয় userName, আর @SerialName, @SerializedName বা @Json(name = ...) মূল কী-টি রেখে দেয়। যে কী একটি Kotlin কীওয়ার্ড, যেমন class বা object, তা ব্যাকটিকের মধ্যে লেখা হয়, ফলে কী-টিই প্রপার্টির আসল নাম থাকে।
পূর্ণসংখ্যা হয় Int, অথবা কোনো মান 2,147,483,647 ছাড়ালে Long, আর নমুনার কোনো মানে দশমিক অংশ থাকলেই ফিল্ডটি Double হয়। ভিন্ন ধরনের মান kotlinx.serialization-এ হয় JsonElement?, আর Gson ও Moshi-তে Any?।
না। রূপান্তর আপনার ব্রাউজারেই চলে, কোনো সার্ভারে অনুরোধ যায় না, আর JSON সংরক্ষিত হয় না, তাই টোকেন বা ব্যক্তিগত তথ্যসহ API রেসপন্স আপনার ডিভাইসেই থাকে। ট্যাবটি বন্ধ করলে কিছুই থাকে না।
হার ও নিয়ম বদলায়; কোনো অঙ্কের ওপর নির্ভর করার আগে সূত্রটি দেখে নিন।
এখনও আটকে আছেন? JSON থেকে Kotlin ডেটা ক্লাস কনভার্টার সম্পর্কে প্রশ্ন করুন আর যিনি জানেন তিনিই উত্তর দিতে পারেন। কোনো অ্যাকাউন্ট লাগবে না।