CSV থেকে JSON-এ কনভার্ট করুন
CSV ফাইল বা পেস্ট করা টেবিলকে পরিষ্কার JSON-এ বদলান — সংখ্যা ও বুলিয়ান টাইপসহ, ডট দেওয়া হেডার থেকে নেস্টেড অবজেক্ট, আর ঠিক সেই আকারে, যা আপনার কোড চায়।
- কখনো সংরক্ষণ করা হয় না
- কোনো লাইন নেই, অপেক্ষা নেই
- সাইনআপ নেই, ওয়াটারমার্ক নেই
যেভাবে কাজ করে
CSV যোগ করুন
একটি .csv বা .tsv ফাইল ছাড়ুন, অথবা ডেটা পেস্ট করুন। ডেলিমিটার ও এনকোডিং আপনার হয়ে শনাক্ত করা হয়।
আকার বেছে নিন
অবজেক্টের অ্যারে, অ্যারের অ্যারে, প্রথম কলাম দিয়ে কি করা অবজেক্ট, বা JSON Lines — সঙ্গে টাইপ, খালি মান ও ইনডেন্টেশন।
কপি বা ডাউনলোড
JSON ক্লিপবোর্ডে কপি করুন, অথবা .json ফাইল হিসেবে সেভ করুন।
যেখানে CSV দেখতে যতটা, তার চেয়ে বেশি অস্পষ্ট
CSV-র আসল কোনো স্ট্যান্ডার্ড নেই — ২০০৫ সালের একটি পরামর্শমূলক স্পেসিফিকেশন আছে, যা বেশিরভাগ টুল যা করে তা বর্ণনা করে, আর প্রচুর সফটওয়্যার আছে যা অন্য কিছু করে। তাই প্রথম কাজ হলো ফাইলটি আসলে কী, তা বের করা: মানগুলো কমা, সেমিকোলন নাকি ট্যাব দিয়ে আলাদা (ইউরোপীয় লোকেল সেমিকোলন এক্সপোর্ট করে, কারণ সেখানে কমা দশমিক বিভাজক), প্রথম সারি হেডার কি না, আর কোটিং কীভাবে সামলানো হয়েছে। কোট করা একটি ফিল্ডে বৈধভাবেই কমা, নিউলাইন আর দ্বিগুণ উদ্ধৃতিচিহ্ন থাকতে পারে, এ কারণেই কমা ধরে ভাগ করা ভুল পদ্ধতি, আর সাদামাটা পার্সার ঠিকানাওয়ালা যেকোনো ফাইল নষ্ট করে ফেলে।
দ্বিতীয় কাজ টাইপ, আর এ ব্যাপারে JSON-এর এমন মতামত আছে যা CSV-র নেই। CSV সেলে শুধু লেখা থাকে; JSON সংখ্যা, স্ট্রিং, বুলিয়ান ও null আলাদা করে। কোনটি কী, তা কাউকে ঠিক করতে হয়, আর গুরুত্বপূর্ণ সিদ্ধান্তগুলো হলো সেগুলোই, যেগুলো ভুল হয়: পোস্টকোড, ফোন নম্বর বা অ্যাকাউন্ট রেফারেন্সে শুরুর শূন্য অর্থবহ, তাই 01234-এর মতো মান 1234 সংখ্যা না হয়ে স্ট্রিং থাকতে হবে। লম্বা আইডির ক্ষেত্রেও একই কথা, যেগুলো JSON সংখ্যা হিসেবে মোটামুটি নয় কোয়াড্রিলিয়নের পর নির্ভুলতা হারায়।
তারিখ যে লেখা ছিল তা-ই থাকে, কারণ JSON-এ কোনো তারিখ টাইপ নেই। 2024-03-05 বের হয় "2024-03-05" স্ট্রিং হিসেবে, আর এটি সীমাবদ্ধতা নয়, সৎ উত্তর — বিকল্প হলো আন্দাজ, আর আন্দাজের কারণেই 03/05/2024 এক দেশে মার্চ আর আরেক দেশে মে হয়ে যায়। এগুলো কনভার্ট করার সিদ্ধান্ত JSON যে ব্যবহার করবে তার, কারণ সে জানে কোন ফরম্যাট তার দরকার।
এনকোডিং শেষ নিঃশব্দ ব্যর্থতা। CSV তার ক্যারেক্টার এনকোডিংয়ের কোনো নোট রাখে না, তাই Windows-1252 হিসেবে সেভ করা ফাইল UTF-8 হিসেবে পড়লে ঠিক সেই সারিগুলোতে বিকৃত অক্ষর (মোজিবাকে) আসে, যেগুলোতে বিশেষ চিহ্নযুক্ত নাম আছে — আর শুরুর বাইট অর্ডার মার্ক, যা Excel যোগ করে, সামলানো না হলে প্রথম ফিল্ডের নামে বেখাপ্পা অক্ষর হিসেবে দেখা দেয়। দুটোই CSV-র বৈশিষ্ট্য, কোনো কনভার্টারের নয়।
অন্য কিছু দরকার হলে
মেমরিতে ধরার পক্ষে খুব বড় ফাইল, বা স্ক্রিপ্টে চলা যেকোনো কাজের জন্য, csvkit বিশেষভাবে তৈরি: csvjson --stream data.csv ধাপে ধাপে কনভার্ট করে, csvlook আগে দেখতে দেয় হাতে কী আছে, আর csvclean সেই এবড়োখেবড়ো সারিগুলো ঠিক করে, যা পরের সবকিছু ভেঙে দেয়। Miller — mlr --icsv --ojson cat data.csv — একই কাজ বেশ দ্রুত করে এবং লাইন-বিভাজিত JSON সামলায়, যা বেশিরভাগ ডেটা পাইপলাইন আসলে চায়।
সুবিধার চেয়ে টাইপ যখন বেশি গুরুত্বপূর্ণ, তখন কনভার্শন কোডে করুন, টাইপ অনুমান না করে ঘোষণা করে। স্পষ্ট dtype ম্যাপিংসহ Python-এর pandas, বা স্কিমাসহ ছোট একটি স্ক্রিপ্ট মানে পোস্টকোড পোস্টকোডই থাকে আর আইডি তার প্রতিটি অঙ্ক রাখে — যে ফাইলের পুরোটা দেখা হয়নি, তাতে কোনো স্বয়ংক্রিয় অনুমান এই নিশ্চয়তা দিতে পারে না।
সাধারণ প্রশ্নোত্তর
কোন JSON আকার বেছে নেব?
অবজেক্টের অ্যারে — [{"name": "Ada", "age": 36}] — প্রায় সব API ও লাইব্রেরির জন্য উপযোগী। অ্যারের অ্যারে সবচেয়ে সংক্ষিপ্ত। কি-যুক্ত অবজেক্টে কোড আইডি দিয়ে রেকর্ড খুঁজে পায়। JSON Lines প্রতি লাইনে একটি রেকর্ড রাখে, স্ট্রিমিং টুল, BigQuery ও লগ পাইপলাইনের জন্য।
সংখ্যা আর বুলিয়ান কীভাবে ঠিক হয়?
প্রতি কলামে একবার: কোনো কলাম সংখ্যা হয় কেবল তখনই, যখন তার প্রতিটি মান সংখ্যা, তাই "007" আর 7 কখনো এক কি-এর নিচে মিশে যায় না। শুরুতে শূন্যওয়ালা মান, আর JavaScript যতটা হুবহু ধরতে পারে তার চেয়ে লম্বা আইডি, স্ট্রিং থাকে। true ও false বুলিয়ান হয়, আর খালি সেল null হয় — অথবা খালি স্ট্রিং, অথবা বাদ পড়ে, আপনি যেমন চান।
এটি কি নেস্টেড JSON বানাতে পারে?
হ্যাঁ। নেস্টিং চালু থাকলে address.city-র মতো হেডার হয় {"address": {"city": …}}, আর tags.0, tags.1 হয় একটি অ্যারে।
আমার ডেটা কি কোথাও সংরক্ষণ করা হয়?
না। কোথাও কিছু পাঠানো হয় না এবং কিছুই সংরক্ষণ করা হয় না।
সেমিকোলন, ট্যাব আর অন্য এনকোডিংয়ের কী হবে?
কমা, সেমিকোলন, ট্যাব ও পাইপ স্বয়ংক্রিয়ভাবে শনাক্ত হয়, তেমনি UTF-8, UTF-16 ও পুরোনো Windows এনকোডিংও, তাই বিশেষ চিহ্নযুক্ত ও অ-লাতিন লেখা অক্ষত আসে।
একই নামের বা খালি কলামের নাম থাকলে?
একই নাম হলে একটি সংখ্যা যোগ হয় (name, name_2), আর খালি হেডার অবস্থানভিত্তিক নাম পায় (column_3), তাই কোনো মান ওভাররাইট হয় না, আর কী বদলাল তা আপনাকে জানানো হয়।
জেনে রাখুন: তারিখ আপনার ফাইলের লেখা হিসেবেই থাকে, কারণ JSON-এ কোনো তারিখ টাইপ নেই। খুব বড় ফাইল আপনার ব্রাউজারের মেমরিতে সীমিত।
এই টুলটি আপনার ওয়েবসাইটে যোগ করুন
যেকোনো ব্লগ, ক্লাসের পেজ বা হেল্প আর্টিকেলের জন্য ফ্রি। একটি স্নিপেট পেস্ট করলেই আপনার ভিজিটররা আপনার পেজেই এটি ব্যবহার করতে পারবেন।
আরও স্প্রেডশিট টুলস
JSON থেকে CSV
নেস্টেড JSON সমতল করে পরিষ্কার কলামে
CSV থেকে Excel
CSV থেকে XLSX, সংখ্যা ও তারিখ সঠিক রেখে
Excel থেকে XML
সারি থেকে পরিষ্কার, সুগঠিত XML
XML থেকে Excel
XML রেকর্ড থেকে ফরম্যাট করা Excel শিট
Excel থেকে CSV
যেকোনো শিট থেকে CSV, আপনার দরকারি এনকোডিংয়ে
ODS থেকে XLSX
LibreOffice-এর স্প্রেডশিট Excel ওয়ার্কবুক হিসেবে