JSON থেকে CSV কনভার্টার

অনলাইনে JSON থেকে CSV-তে রূপান্তর করুন — সম্পূর্ণ বিনামূল্যে, তাৎক্ষণিকভাবে এবং নিরাপদে। আপনার ফাইলটি আপনার ব্রাউজারেই প্রসেস করা হয়, কখনো আপলোড করা হয় না।

CSV ডেলিমিটার
ফলাফল

রূপান্তরিত ফাইল এবং প্রিভিউ এখানে দেখা যাবে।

প্রস্তুত। রূপান্তর করতে একটি টেবিল ফাইল বেছে নিন।

রূপান্তর যেভাবে কাজ করে

  • অবজেক্টের একটি অ্যারে রো এবং কলামে পরিণত হয়; নেস্টেড অবজেক্টগুলোকে ডট-কী কলামে ফ্ল্যাটেন করা হয়, যেমন address.city।
  • আপনার ডেটার সাথে মেলে এমন ডেলিমিটার (delimiter) বেছে নিন — কমা, সেমিকোলন বা ট্যাব।

আপনার টেবিল ফাইলটি আপনার ব্রাউজারেই রূপান্তর করা হয়। BroBroGo-তে কিছুই আপলোড করা হয় না।

সাধারণ জিজ্ঞাসা (FAQ)

আমি কীভাবে JSON থেকে CSV-তে রূপান্তর করব?

আপনার JSON ফাইলটি ড্রপ করুন এবং কনভার্ট বাটনে ক্লিক করুন — কয়েক সেকেন্ডের মধ্যে ফলাফলের প্রিভিউ সহ CSV ফাইলটি ডাউনলোডের জন্য প্রস্তুত হয়ে যাবে। সবকিছু আপনার ডিভাইসেই সম্পন্ন হবে।

আমি কত বড় ফাইল রূপান্তর করতে পারব?

প্রতি ফাইলে সর্বোচ্চ 8 MB, ১০,০০০টি রো (row) এবং ২০০টি কলাম। বড় ডেটাসেটগুলো প্রথমে ছোট ফাইলে বিভক্ত করে নেওয়া ভালো।

JSON থেকে CSV রূপান্তর টুল: বিস্তারিত নির্দেশিকা

টুলটি কী করে এবং কেন এটি অন্যান্য রূপান্তর টুল থেকে আলাদা

এই টুলটি একটি JSON ফাইলকে CSV ফাইলে রূপান্তর করে। আপনি কমা, সেমিকোলন বা ট্যাব—যেকোনো একটি ডেলিমিটার বেছে নিতে পারেন। রূপান্তরিত টেবিলের একটি প্রিভিউ দেখতে পান এবং পরে ফাইলটি ডাউনলোড করতে পারেন। সবচেয়ে গুরুত্বপূর্ণ বিষয়: সমস্ত প্রক্রিয়াকরণ আপনার ব্রাউজারের ভেতরেই ঘটে; কোনো ডেটা কোনো সার্ভারে আপলোড হয় না।

এই টুলটিকে বিশেষ করে তোলে তার দিক হলো দিক পরিবর্তন। JSON থেকে CSV রূপান্তরের সময় একটি শ্রেণিবদ্ধ (hierarchical) ও টাইপযুক্ত ডেটা ফরম্যাটকে একটি ফ্ল্যাট ও টাইপবিহীন টেবিলে পরিণত করতে হয়। JSON অবজেক্ট, অ্যারে, সংখ্যা, বুলিয়ান, null ইত্যাদি নেস্টেড কাঠামো সমর্থন করে। CSV-তে কোনো টাইপ নেই, কোনো নেস্টিং নেই। রূপান্তরের সময় সমস্ত টাইপ তথ্য, নেস্টেড স্ট্রাকচার এবং ফরম্যাটিং হারিয়ে যায়। নেস্টেড JSON অবজেক্টকে ফ্ল্যাট CSV-তে উপস্থাপন করতে টুলটি ডট-পাথ নোটেশন ব্যবহার করে, যেমন address.city। অ্যারে অফ অবজেক্ট টেবিলের সারি হয়; অ্যারে অফ অ্যারে সারি হিসেবেই থাকে।

যেহেতু CSV ডেলিমিটার ব্যবহার করে, এম্বেডেড কমা ও লাইন ব্রেককে উদ্ধৃতি চিহ্নের মধ্যে রাখতে হয়—টুলটি স্বয়ংক্রিয়ভাবে এটি করে। তবে সংখ্যার লিডিং জিরো (যেমন 00123) হারিয়ে যেতে পারে।

JSON ও CSV-এর কাঠামোগত পার্থক্য ও রূপান্তরের চ্যালেঞ্জ

JSON (JavaScript Object Notation) একটি শ্রেণিবদ্ধ ডেটা ফরম্যাট যেখানে কী-ভ্যালু পেয়ার, নেস্টেড অবজেক্ট এবং অ্যারে থাকে। উদাহরণ:

{
  "user": {
    "name": "রহিম",
    "address": {
      "city": "ঢাকা",
      "zip": 1212
    }
  },
  "scores":
}

CSV (Comma-Separated Values) একটি ফ্ল্যাট টেবিল যেখানে প্রতিটি সারিতে একই সংখ্যক কলাম থাকে এবং কোনো নেস্টিং নেই। উপরের JSON-কে CSV-তে রূপান্তর করলে ডট-পাথ ব্যবহার করে কলাম হবে:

user.name user.address.city user.address.zip scores
রহিম ঢাকা 1212

এখানে দেখা যাচ্ছে, অ্যারের উপাদানগুলি একটি একক সেলে JSON টেক্সট হিসেবে থাকে। যদি JSON টেবিল-শেপড না হয় (অর্থাৎ একটি একক অ্যারে অফ অবজেক্ট বা অ্যারে অফ অ্যারে নয়), তাহলে টুলটি "This JSON is invalid or not table-shaped." ত্রুটি দেখায়। কারণ CSV-তে একাধিক গভীরতার নেস্টেড ডেটা সরাসরি রাখা সম্ভব নয়।

আরেকটি বড় চ্যালেঞ্জ: CSV-তে টাইপ তথ্য সংরক্ষণ হয় না। JSON-এর সংখ্যা, বুলিয়ান, null সবকিছুই রূপান্তরের সময় স্ট্রিং হয়ে যায়। উদাহরণস্বরূপ, "isActive": true CSV-তে true (স্ট্রিং) হিসেবে লেখা হবে। "price": null হয়ে যাবে একটি খালি সেল।

নেস্টেড JSON ফ্ল্যাট করার কৌশল: ডট-পাথ নোটেশন

টুলটি যখন কোনো JSON অবজেক্টের মধ্যে আরেকটি অবজেক্ট পায়, তখন সেটিকে ডট-পাথ ব্যবহার করে ফ্ল্যাট করে। অর্থাৎ, প্যারেন্ট কী ও চাইল্ড কী-এর মধ্যে একটি ডট (.) বসিয়ে নতুন কলাম নাম তৈরি হয়। উদাহরণ:

  • ইনপুট: { "person": { "age": 30, "name": { "first": "আফরোজা", "last": "হোসেন" } } }
  • আউটপুট কলাম: person.age, person.name.first, person.name.last

যদি অ্যারের মধ্যে অবজেক্ট থাকে (অ্যারে অফ অবজেক্ট), তাহলে প্রতিটি অবজেক্ট আলাদা সারি হয় এবং কলামের নাম হয় অ্যারে_নাম.০.কী, অ্যারে_নাম.১.কী ইত্যাদি। তবে টুলটি শুধুমাত্র টেবিল-শেপড JSON নিয়ে কাজ করে। যদি JSON-তে একটি মাত্র অ্যারে অফ অবজেক্ট থাকে, তাহলে সেটি সরাসরি সারি-কলামে পরিণত হয়। অ্যারে অফ অ্যারে-র ক্ষেত্রে প্রতিটি ভেতরের অ্যারে একটি সারি হয়, কলাম সংখ্যা সবচেয়ে বড় অ্যারের দৈর্ঘ্যের সমান হয় (ছোট অ্যারেগুলোর অনুপস্থিত সেল খালি থাকে)।

CSV ডেলিমিটার নির্বাচন: কমা, সেমিকোলন বা ট্যাব

CSV ফাইল বিভিন্ন ডেলিমিটার ব্যবহার করতে পারে। সাধারণত কমা (,) ব্যবহৃত হয়, কিন্তু কিছু অঞ্চলে (যেমন ইউরোপে যেখানে কমা দশমিক বিভাজক) সেমিকোলন (;) বেশি প্রচলিত। ট্যাব ডিলিমিটেড ফাইলও প্রচলিত, বিশেষ করে যখন ডেটাতে কমা বা সেমিকোলন থাকতে পারে। এই টুল আপনাকে তিনটি অপশন দেয়: কমা, সেমিকোলন বা ট্যাব।

ডেলিমিটার ব্যবহারের উদাহরণ
কমা (,) মার্কিন যুক্তরাষ্ট্র, কানাডা
সেমিকোলন (;) জার্মানি, ফ্রান্স, ইতালি
ট্যাব (\t) সর্বজনীন, বিশেষত যখন ডেটায় কমা ও সেমিকোলন উভয়ই থাকে

ডেলিমিটার নির্বাচন করার সময় মনে রাখবেন যে JSON-এর ভ্যালুতে যদি ডেলিমিটার (যেমন কমা) থাকে, তাহলে সেটি স্বয়ংক্রিয়ভাবে উদ্ধৃতি চিহ্নের মধ্যে আবদ্ধ হবে। উদাহরণ: "city": "নিউ ইয়র্ক, নিউ ইয়র্ক" CSV-তে হবে "নিউ ইয়র্ক, নিউ ইয়র্ক" (ডাবল কোটেড)। একইভাবে, ভ্যালুর ভেতর উদ্ধৃতি চিহ্ন থাকলে সেটিকে দ্বিগুণ করে ("") এস্কেপ করা হয়।

টাইপ ও স্ট্রাকচারের ক্ষতি: কী কী হারায় আপনি

JSON থেকে CSV রূপান্তরের সময় ডেটার সব টাইপ তথ্য হারিয়ে যায়। নিচের টেবিলটি দেখায় কী কী পরিবর্তন ঘটে:

JSON টাইপ CSV-তে রূপ
সংখ্যা (Integer, Float) স্ট্রিং (উদাহরণ: 42 → "42", 3.14 → "3.14")
বুলিয়ান (true/false) স্ট্রিং ("true" বা "false")
null খালি সেল
অবজেক্ট ডট-পাথ কলামে বিভক্ত
অ্যারে একটি একক সেলে JSON টেক্সট হিসেবে

লিডিং জিরো হারানোর বিষয়টি বিশেষভাবে সতর্ক হওয়ার মতো। উদাহরণস্বরূপ, জিপ কোড যেমন 02134 JSON-এ একটি সংখ্যা হিসেবে থাকলে CSV-তে 2134 হয়ে যেতে পারে। কারণ সংখ্যা থেকে স্ট্রিং রূপান্তরের সময় লিডিং জিরো স্বাভাবিকভাবে মুছে যায়। যদি আপনার ডেটায় লিডিং জিরো সংরক্ষণ করা জরুরি হয়, তাহলে JSON-এ সেই ফিল্ডকে স্ট্রিং হিসেবেই রাখুন (যেমন "zip": "02134")।

নেস্টেড স্ট্রাকচার সম্পূর্ণ হারিয়ে যায়। আপনি আর জানতে পারবেন না যে person.name.first মূলত একটি অবজেক্টের ভেতর ছিল। CSV ফাইল থেকে JSON-এ ফিরে যাওয়ার সময় এই নেস্টিং পুনর্গঠন সম্ভব নয় (যদি না আপনি নিজে ডট-পাথ পার্স করেন)।

ক্লায়েন্ট-সাইড প্রক্রিয়াকরণ: গোপনীয়তা ও সীমাবদ্ধতা

টুলটির সবচেয়ে গুরুত্বপূর্ণ বৈশিষ্ট্য হলো এটি সম্পূর্ণরূপে ক্লায়েন্ট-সাইডে কাজ করে। আপনার ফাইল কখনো সার্ভারে আপলোড হয় না। এটি সংবেদনশীল ডেটা (যেমন ব্যক্তিগত তথ্য, আর্থিক রেকর্ড) নিয়ে কাজ করার সময় একটি বড় সুবিধা। যারা প্রাইভেসি-সেনসিটিভ ওয়ার্কফ্লোতে ডেটা কনভার্ট করতে চান, তাদের জন্য এটি আদর্শ।

সীমাবদ্ধতা হিসেবে, টুলটির নিজস্ব ফাইল সাইজ সীমা রয়েছে। ফাইলটি 8 MB এর বেশি হলে, "This file is too large. Use a file under ‹max›." ত্রুটি দেখায়। অনুরূপভাবে, টেবিলের সারি 10,000 এর বেশি বা কলাম 200 এর বেশি হলে, ত্রুটি দেখায়।

অন্য সম্ভাব্য ত্রুটিগুলি:

  • "Choose a CSV, JSON or XLSX file." – আপনি অন্য কোনো ফরম্যাটের ফাইল দিলেন।
  • "This CSV could not be parsed." – CSV পার্স করা যায়নি।
  • "This JSON is invalid or not table-shaped." – JSON অবৈধ বা টেবিল-শেপড নয়।
  • "This Excel file could not be opened." – এক্সেল ফাইল খোলা যায়নি।
  • "This file has no table rows." – ফাইলে কোনো টেবিল সারি নেই।
  • "Conversion cancelled." – আপনি রূপান্তর বাতিল করলেন।
  • "Could not convert this file." – জেনেরিক কনভার্সন ব্যর্থতা।
  • "This conversion is taking too long. Try a smaller file." – ফাইলটি খুব জটিল বা বড়, ব্রাউজার প্রসেসিং সময়সীমা অতিক্রম করেছে।

সচরাচর জিজ্ঞাসা (FAQ)

প্রশ্ন ১: আমার JSON ফাইলের ভেতরে আরেকটি JSON অ্যারে আছে। টুলটি কীভাবে সেটি হ্যান্ডেল করবে? উত্তর: যদি অ্যারের উপাদানগুলো অবজেক্ট হয় এবং ফাইলটি টেবিল-শেপড হয় (একক অ্যারে অফ অবজেক্ট), তাহলে প্রতিটি অবজেক্ট একটি সারি হবে এবং অ্যারের ভেতরের ফিল্ডগুলো ডট-পাথ কলামে পরিণত হবে। যদি অ্যারেটি নিজেই মূল উপাদান হয় (যেমন ``), তাহলে প্রতিটি সাব-অ্যারে একটি সারি হবে।

প্রশ্ন ২: CSV-তে কি JSON-এর null ভ্যালু সংরক্ষিত হয়? উত্তর: null CSV-তে খালি সেল হিসেবে লেখা হয়। যেকোনো ক্ষেত্রে, মূল JSON টাইপ তথ্য হারিয়ে যায়।

প্রশ্ন ৩: আমার JSON-এ অনেক গভীর নেস্টিং আছে। টুলটি কি সব স্তর ফ্ল্যাট করবে? উত্তর: হ্যাঁ, টুলটি যেকোনো গভীরতার নেস্টিংকে ডট-পাথ ব্যবহার করে সম্পূর্ণ ফ্ল্যাট করে। উদাহরণ: a.b.c.d.e স্তর পর্যন্ত কলাম নাম তৈরি হবে। তবে মনে রাখবেন, খুব গভীর নেস্টিং হলে কলাম সংখ্যা অনেক বেড়ে যেতে পারে, যা সীমা অতিক্রম করতে পারে।

প্রশ্ন ৪: আমি কীভাবে নিশ্চিত করব যে আমার JSON টেবিল-শেপড? উত্তর: JSON-এর মূল অবজেক্টটি যদি একটি অ্যারে হয় এবং সেই অ্যারের প্রতিটি উপাদান অবজেক্ট হয় (অথবা নিজেও অ্যারে হয়), তাহলে এটি টেবিল-শেপড। উদাহরণ: [{"name":"A"},{"name":"B"}] – এটি কাজ করবে। কিন্তু {"users":[{"name":"A"}]} – এটি টেবিল-শেপড নয়, কারণ মূল অবজেক্টটি একটি অ্যারে নয়। সেক্ষেত্রে আপনি প্রথমে users অ্যারেটি বের করে নিতে পারেন।

প্রশ্ন ৫: আমার CSV ফাইলে লিডিং জিরো সংরক্ষণ করতে চাই। কী করব? উত্তর: JSON-এ ওই ফিল্ডের মান স্ট্রিং হিসেবে দিন (উদ্ধৃতি চিহ্নের ভেতরে)। উদাহরণ: "zip": "01234"। সংখ্যা হিসেবে দিলে (যেমন "zip": 01234) জিরো হারাবে। CSV আউটপুটে এটি "01234" স্ট্রিং হিসেবে থাকবে।

প্রশ্ন ৬: টুলটি কি কেবল ব্রাউজারে কাজ করে? অফলাইনে ব্যবহার করতে পারব? উত্তর: হ্যাঁ, সব প্রক্রিয়াকরণ আপনার ব্রাউজারে ঘটে। একবার পেজ লোড হয়ে গেলে, টুলটি অফলাইনেও কাজ করতে পারে। তবে ইন্টারনেট সংযোগের প্রয়োজন পেজটি অ্যাক্সেস করার সময়; পরবর্তী ব্যবহারে আপনি স্থানীয়ভাবে ফাইল নির্বাচন করে রূপান্তর চালাতে পারেন।