একটি JSON নমুনাকে Jackson-এর জন্য অ্যানোটেট করা Java POJO, রেকর্ড বা Lombok ক্লাসে রূপান্তর করুন
আপনার ব্রাউজারে চলে। আপনি যা লেখেন তা কোথাও পাঠানো হয় না। যাচাই করা হয়েছে 16 অক্টোবর, 2026।একটি JSON নমুনা পেস্ট করুন আর Jackson-এর জন্য অ্যানোটেট করা Java ক্লাস পান, getter ও setter সহ POJO, রেকর্ড বা Lombok @Data হিসেবে। পূর্ণসংখ্যা হয় int, 2,147,483,647-এর বেশি হলে long, যেকোনো দশমিক একটি ফিল্ডকে double করে, আর null বা অনুপস্থিত মান বক্সড টাইপ ব্যবহার করে, যেমন Integer।
এই পৃষ্ঠাটি ইংরেজি মূল লেখা থেকে যন্ত্রের সাহায্যে অনুবাদ করা হয়েছে। এই অনুবাদটি এখনও কোনো মানুষ পর্যালোচনা করেননি, তাই ইংরেজি সংস্করণটিকেই নির্ভরযোগ্য ধরুন। ইংরেজি মূল লেখাটি পড়ুন
বাঁ দিকের বাক্সে একটি JSON নমুনা পেস্ট করুন, যেমন একটি API রেসপন্স।
লেখার সাথে সাথে Java দেখা যায়: একটি Root.java, প্রতিটি অবজেক্টের জন্য একটি নেস্টেড স্ট্যাটিক ক্লাস, camelCase ফিল্ড এবং যেখানে কী আলাদা সেখানে @JsonProperty সহ।
getter ও setter সহ POJO, একটি রেকর্ড (Java 16+) বা Lombok @Data বেছে নিন, এবং রুট ক্লাসের নাম ঠিক করুন।
কপি করুন চাপুন, অথবা Root.java সংরক্ষণ করতে ডাউনলোড চাপুন, এবং Jackson-এর ObjectMapper দিয়ে JSON পড়ুন।
Java JSON-কে ক্লাসে পড়ে, সাধারণত Jackson দিয়ে, আর JSON-এর প্রতিটি অবজেক্টের জন্য এমন একটি ক্লাস দরকার যার ফিল্ডগুলোর টাইপ ও নাম সঠিক। এই কনভার্টার একটি নমুনা থেকে সেই ক্লাসগুলো লেখে, তাই একটি লম্বা API রেসপন্স এক পেস্টেই কম্পাইল হওয়া Java হয়ে যায়।
টাইপ কীভাবে বেছে নেওয়া হয়।
| JSON মান | Java টাইপ |
|---|---|
| "text" | String |
| true / false | boolean |
| 42 (শুধু পূর্ণসংখ্যা) | int, অথবা 32 বিটের বেশি হলে long |
| 4.5 (কোনো দশমিক দেখা গেলে) | double |
| null, বা কিছু আইটেমে অনুপস্থিত | Integer, Boolean, Double |
| শুধু null, বা মিশ্র ধরন | Object |
| [ ... ] | List<...> |
| { } ফাঁকা | Map<String, Object> |
| { ... } | একটি নেস্টেড স্ট্যাটিক ক্লাস |
একটি ফাইল। আউটপুট একটিমাত্র Root.java: রুট ক্লাস অন্য প্রতিটি ক্লাসকে public static নেস্টেড ক্লাস হিসেবে রাখে, যা Jackson তৈরি করতে পারে এবং যার জন্য বাড়তি ফাইল লাগে না। JSON একটি অ্যারে বা একক মান হলে, একটি মন্তব্য জানায় কোন টাইপ হিসেবে পড়তে হবে, যেমন List<Root.RootItem>।
নাম ও কী। ফিল্ডগুলো camelCase-এ থাকে, তাই user_name হয় userName, আর @JsonProperty("user_name") কী-টি রেখে দেয়। Java কীওয়ার্ড একটি আন্ডারস্কোর পায়, যেমন class_। xCoord-এর মতো একটি ফিল্ড লেখা হয় xcoord, কারণ নইলে Jackson একে ভিন্ন নামে getXCoord getter-এর সাথে জুড়ে দিত। একটি ফাঁকা কী @JsonIgnoreProperties দিয়ে উপেক্ষা করা হয়, কারণ Jackson এর নাম দিতে পারে না।
তিনটি স্টাইল। একটি POJO-তে প্রাইভেট ফিল্ড, getter ও setter থাকে এবং সব জায়গায় কাজ করে। একটি রেকর্ড (Java 16+) ছোট ও অপরিবর্তনীয়। Lombok @Data ফিল্ডগুলো রাখে আর বাকিটা Lombok-কে লিখতে দেয়।
9টি নমুনার POJO আউটপুট javac দিয়ে কম্পাইল করে Jackson 2.17 দিয়ে পড়া হয়েছে, অজানা কী এবং প্রিমিটিভে null-কে ত্রুটি ধরে। আপনি যা পেস্ট করেন তার কিছুই ব্রাউজারের বাইরে যায় না।
কনভার্টারে একটি JSON নমুনা পেস্ট করুন, পাশেই Java দেখা যাবে: একটি Root.java, প্রতিটি অবজেক্টের জন্য একটি নেস্টেড স্ট্যাটিক ক্লাসসহ। প্রজেক্টে Jackson যোগ করুন এবং new ObjectMapper().readValue(json, Root.class) দিয়ে JSON পড়ুন, যা প্রতিটি ফিল্ড তার কী থেকে পূরণ করে।
সব ক্লাস Root-এর ভেতরে রাখলে পুরো মডেল একটি ফাইলে থাকে, যা যেমন আছে তেমনই কম্পাইল হয়। Jackson একটি নেস্টেড ক্লাস তখনই তৈরি করতে পারে যখন সেটি স্ট্যাটিক, কারণ একটি ইনার ক্লাসের আগে তার আউটার ক্লাসের একটি ইনস্ট্যান্স লাগে, তাই প্রতিটি নেস্টেড ক্লাস public static ঘোষণা করা হয়।
নমুনায় কোনো ফিল্ড null দেখালে বা কিছু অবজেক্টে কী বাদ থাকলে, ফিল্ডটি বক্সড টাইপ ব্যবহার করে, যেমন Integer, Long, Double বা Boolean। একটি প্রিমিটিভ int null ধরে রাখতে পারে না, আর একটি অনুপস্থিত কী নিঃশব্দে 0 হয়ে যেত, তাই বক্সড টাইপ অনুপস্থিত মানকে শূন্য থেকে আলাদা রাখে।
Java 16 থেকে রেকর্ড সবচেয়ে ছোট ও অপরিবর্তনীয়, আর Jackson 2.12 বা পরের সংস্করণ এগুলো সরাসরি পড়ে। getter ও setter সহ একটি POJO যেকোনো Java সংস্করণে এবং প্রতিটি লাইব্রেরির সাথে কাজ করে। Lombok-এর @Data কম্পাইলের সময় আপনার হয়ে getter ও setter লিখে দেয়, ফলে সোর্স ছোট থাকে।
Jackson getter-এর মাধ্যমে প্রপার্টি খোঁজে, এবং শুরুর বড় হাতের অক্ষর ছোট করে getXCoord-এর নাম দেয় xcoord। তখন xCoord নামের একটি ফিল্ড নিজের getter-এর সাথে মিলত না, আর প্রপার্টিটি দুই ভাগ হয়ে যেত। তাই ফিল্ডের নাম xcoord, আর @JsonProperty("xCoord") মূল কী-টি রেখে দেয়।
না। রূপান্তর আপনার ব্রাউজারেই চলে, কোনো সার্ভারে অনুরোধ যায় না, আর JSON সংরক্ষিত হয় না, তাই টোকেন বা ব্যক্তিগত তথ্যসহ API রেসপন্স আপনার ডিভাইসেই থাকে। ট্যাবটি বন্ধ করলে কিছুই থাকে না।
হার ও নিয়ম বদলায়; কোনো অঙ্কের ওপর নির্ভর করার আগে সূত্রটি দেখে নিন।
এখনও আটকে আছেন? JSON থেকে Java ক্লাস কনভার্টার সম্পর্কে প্রশ্ন করুন আর যিনি জানেন তিনিই উত্তর দিতে পারেন। কোনো অ্যাকাউন্ট লাগবে না।