একটি JSON নমুনাকে json ট্যাগ, int বা float64, পয়েন্টার ও omitempty সহ Go স্ট্রাক্টে রূপান্তর করুন
আপনার ব্রাউজারে চলে। আপনি যা লেখেন তা কোথাও পাঠানো হয় না। যাচাই করা হয়েছে 16 অক্টোবর, 2026।একটি JSON নমুনা পেস্ট করুন আর json ট্যাগসহ Go struct টাইপ পান, json.Unmarshal-এর জন্য তৈরি। পূর্ণসংখ্যা হয় int, 2,147,483,647-এর বেশি হলে int64, আর যেকোনো দশমিক একটি ফিল্ডকে float64 করে; যে মান মাঝে মাঝে null, সেটি পয়েন্টার হয়, আর কিছু অবজেক্টে অনুপস্থিত কী omitempty পায়।
এই পৃষ্ঠাটি ইংরেজি মূল লেখা থেকে যন্ত্রের সাহায্যে অনুবাদ করা হয়েছে। এই অনুবাদটি এখনও কোনো মানুষ পর্যালোচনা করেননি, তাই ইংরেজি সংস্করণটিকেই নির্ভরযোগ্য ধরুন। ইংরেজি মূল লেখাটি পড়ুন
বাঁ দিকের বাক্সে একটি JSON নমুনা পেস্ট করুন, যেমন একটি API রেসপন্স।
লেখার সাথে সাথে Go টাইপ দেখা যায়: প্রতিটি অবজেক্টের জন্য একটি স্ট্রাক্ট, json ট্যাগ এবং UserID-এর মতো Go-ধাঁচের নামসহ।
চাইলে নেস্টেড স্ট্রাক্ট ইনলাইন বা প্রতিটি ফিল্ডে omitempty বেছে নিন, এবং রুট টাইপের নাম ঠিক করুন।
কপি করুন চাপুন, অথবা একটি .go ফাইল সংরক্ষণ করতে ডাউনলোড চাপুন, এবং আপনার package লাইন যোগ করুন।
Go JSON-কে স্ট্রাক্টে ডিকোড করে, আর প্রতিটি ফিল্ডের সঠিক টাইপ এবং কী-এর নাম বলা একটি json:"..." ট্যাগ দরকার। এই কনভার্টার একটি নমুনা থেকে সেই টাইপগুলো লেখে, তাই 200 লাইনের একটি API রেসপন্স এক পেস্টেই সঠিক Go হয়ে যায়।
টাইপ কীভাবে বেছে নেওয়া হয়।
| JSON মান | Go টাইপ |
|---|---|
| "text" | string |
| true / false | bool |
| 42 (শুধু পূর্ণসংখ্যা) | int, অথবা 32 বিটের বেশি হলে int64 |
| 4.5 (কোনো দশমিক দেখা গেলে) | float64 |
| null, সাথে আরেকটি টাইপ | একটি পয়েন্টার, যেমন *string |
| শুধু null, বা মিশ্র ধরন | any |
| [ ... ] | একটি স্লাইস, যেমন []string |
| { ... } | একটি নামযুক্ত স্ট্রাক্ট, বা ইনলাইন একটি |
অবজেক্টের অ্যারে। একটি অ্যারের সব অবজেক্ট মিলে একটি স্ট্রাক্ট হয়, তাই যে ফিল্ড শুধু কয়েকটিতে আছে সেটিও থাকে, তার ট্যাগে ,omitempty সহ। হুবহু একই কী ও টাইপের দুটি অবজেক্ট একটি টাইপের নাম ভাগ করে নেয়।
নাম। কীগুলো Go-ধাঁচের এক্সপোর্টেড নাম হয়: user_id হয় UserID, avatar_url হয় AvatarURL, golint-এর আদ্যক্ষর তালিকা অনুযায়ী। অঙ্ক দিয়ে শুরু হওয়া একটি কী সামনে একটি N পায়; একই নাম তৈরি করা দুটি কী-তে নম্বর দেওয়া হয়। কমার মতো যে অক্ষর একটি ট্যাগ ধরতে পারে না, এমন অক্ষরসহ একটি কী একটি মন্তব্য দিয়ে চিহ্নিত করা হয়, কারণ encoding/json সেটি মেলাত না।
অপশন। নেস্টেড স্ট্রাক্ট ইনলাইন ভেতরে বেনামি স্ট্রাক্টসহ একটি টাইপ লেখে, যা এককালীন রেসপন্সের জন্য উপযুক্ত। প্রতিটি ফিল্ডে omitempty সেই স্ট্রাক্টের জন্য উপযুক্ত যা আপনি মার্শালও করেন। আপনি নাম না দিলে রুট টাইপের নাম Root।
প্রতিটি আউটপুট যাচাই করা হয়েছে Go আবার পড়ে এবং encoding/json-এর নিয়মে নমুনাটি ডিকোড করে। আপনি যা পেস্ট করেন তার কিছুই ব্রাউজারের বাইরে যায় না।
কনভার্টারে একটি JSON নমুনা পেস্ট করুন, পাশেই Go স্ট্রাক্ট দেখা যাবে, প্রতিটি ফিল্ডে একটি json ট্যাগ এবং নেস্টেড অবজেক্টগুলো নিজস্ব টাইপ হিসেবে। এটি আপনার প্যাকেজে কপি করুন এবং json.Unmarshal(data, &v) দিয়ে ডিকোড করুন, যেখানে v হলো রুট টাইপের একটি ভেরিয়েবল।
নমুনার প্রতিটি মান পূর্ণসংখ্যা হলে int, আর কোনো মানে দশমিক অংশ থাকলে float64 ব্যবহার করুন, কারণ encoding/json 4.5-কে একটি int-এ রাখতে অস্বীকার করে। কনভার্টার প্রতিটি ফিল্ডের জন্য আলাদাভাবে বেছে নেয়, এবং কোনো পূর্ণসংখ্যা 2,147,483,647 ছাড়ালে int64 নেয়।
যে ফিল্ড null এবং একটি মান দুইভাবেই দেখা গেছে, সেটি একটি পয়েন্টার হয়, যেমন *string, তাই nil মানে null আর একটি ফাঁকা স্ট্রিং আলাদা থাকে। যে ফিল্ড শুধু null-ই ছিল, সেটি any হয়, কারণ অন্যথায় এতে কী থাকত নমুনা তা বলে না।
omitempty থাকলে, ফিল্ডে শূন্য মান থাকলে json.Marshal সেটি বাদ দেয়: একটি ফাঁকা স্ট্রিং, 0, false, nil বা একটি ফাঁকা স্লাইস। কনভার্টার এটি অ্যারের কিছু অবজেক্টে অনুপস্থিত কী-তে যোগ করে, আর একটি সুইচ এটি প্রতিটি ফিল্ডে যোগ করে।
golint ও বেশিরভাগ লিন্টারের যাচাই করা Go স্টাইল আদ্যক্ষরগুলো বড় হাতের অক্ষরে লেখে: ID, URL, HTTP, API, JSON এবং আরও প্রায় চল্লিশটি। json ট্যাগ মূল কী, user_id বা userId, রেখে দেয়, তাই ডিকোডিং তখনও API-এর সাথে হুবহু মেলে।
না। রূপান্তর আপনার ব্রাউজারেই চলে, কোনো সার্ভারে অনুরোধ যায় না, আর JSON সংরক্ষিত হয় না, তাই টোকেন বা ব্যক্তিগত তথ্যসহ API রেসপন্স আপনার ডিভাইসেই থাকে। ট্যাবটি বন্ধ করলে কিছুই থাকে না।
হার ও নিয়ম বদলায়; কোনো অঙ্কের ওপর নির্ভর করার আগে সূত্রটি দেখে নিন।
এখনও আটকে আছেন? JSON থেকে Go স্ট্রাক্ট কনভার্টার সম্পর্কে প্রশ্ন করুন আর যিনি জানেন তিনিই উত্তর দিতে পারেন। কোনো অ্যাকাউন্ট লাগবে না।