মূল অংশে যান

JSON থেকে CSV-তে কনভার্ট করুন

API রেসপন্স, এক্সপোর্ট ও JSON Lines-কে এমন CSV-তে বদলান, যা Excel-এ পরিষ্কারভাবে খোলে — রেকর্ডগুলো আপনার হয়ে খুঁজে বের করা হয়, নেস্টেড ফিল্ড পড়ার মতো কলামে সমতল হয়, আর বড় আইডি অঙ্কে অঙ্কে অক্ষত থাকে।

  • কখনো সংরক্ষণ করা হয় না
  • কোনো লাইন নেই, অপেক্ষা নেই
  • সাইনআপ নেই, ওয়াটারমার্ক নেই

যেভাবে কাজ করে

1

JSON যোগ করুন

একটি .json বা .jsonl ফাইল ছাড়ুন, অথবা JSON সরাসরি বক্সে পেস্ট করুন।

2

রেকর্ড বেছে নিন

রেকর্ডের তালিকা স্বয়ংক্রিয়ভাবে খুঁজে পাওয়া যায়, এমনকি data.items-এর গভীরে থাকলেও। অ্যারে কীভাবে লেখা হবে বেছে নিন এবং প্রিভিউ দেখে নিন।

3

ডাউনলোড

আপনার দরকারি ডেলিমিটার ও এনকোডিংয়ে একটি CSV, Excel, Google Sheets বা ডেটাবেসের জন্য তৈরি।

একটি ট্রি-কে গ্রিডে সমতল করা

JSON একটি ট্রি আর CSV একটি আয়তক্ষেত্র, আর পুরো কনভার্শনটিই হলো একটি থেকে অন্যটি কীভাবে হবে, সেই প্রশ্ন। পরিষ্কার ক্ষেত্রটি হলো এমন অবজেক্টের অ্যারে, যাদের সবার কি একই — প্রতিটি অবজেক্ট একটি সারি, প্রতিটি কি একটি কলাম, আর কিছুই হারায় না। বেশিরভাগ API রেসপন্স ও এক্সপোর্ট দেখতে এমনই, তাই সাধারণত এটি এমনিতেই কাজ করে। যত ঝামেলা আসে সেই ডকুমেন্টগুলো থেকে, যেগুলো এই আকারের নয়।

নেস্টেড অবজেক্ট তাদের কি জুড়ে সমতল করা হয়, তাই কোনো গ্রাহকের ভেতরের address অবজেক্ট address.city ও address.postcode-এর মতো কলাম হয় — এমন একটি রীতি, যা প্রতিটি স্প্রেডশিট সামলায় অথচ কোনো স্ট্যান্ডার্ড সংজ্ঞায়িত করে না। যে কি কিছু অবজেক্টে আছে আর কিছুতে নেই, সেগুলো এমন কলাম হয় যা যেসব সারিতে সেটি ছিল না সেখানে খালি থাকে — আর এটাই সঠিক উত্তর: বিকল্প হলো এমন ডেটা বাদ দেওয়া, যা শুধু কিছু রেকর্ডে আছে।

নেস্টেড অ্যারেতেই একটি গ্রিড সত্যিকার অর্থে পেরে ওঠে না। ভেতরে তিনটি অর্ডার লাইনসহ একটি রেকর্ড মানে একটি তালিকাসহ একটি সারি, তিনটি সারি নয় — তিনটিতে ভাগ করলে বাকি প্রতিটি ফিল্ড দ্বিগুণ হতো এবং ডেটার অর্থ নিঃশব্দে বদলে যেত। তাই একটি অবজেক্টের অ্যারে সারিতে ছড়ানো হয় আর বাকিগুলো তাদের সেলে লেখা হিসেবে লেখা হয়। আপনার যদি অর্ডারের বদলে অর্ডার লাইনগুলোই দরকার হয়, তবে কনভার্শনটি সেই অ্যারের দিকে তাক করুন; পাশাপাশি দুটি তালিকাওয়ালা ট্রি-র কোনো একক সঠিক আয়তক্ষেত্র নেই, আর একটি বেছে নেওয়ার সিদ্ধান্ত শুধু আপনিই নিতে পারেন।

বের হওয়ার পথে দুটি খুঁটিনাটি ঝামেলা করে। কমা, উদ্ধৃতিচিহ্ন বা লাইন ব্রেকওয়ালা মান কোট করা হয় যাতে সেগুলো টিকে থাকে — এটি সঠিক CSV, যদিও কাঁচা ফাইল খুললে অদ্ভুত দেখায়। আর লম্বা সংখ্যার আইডি CSV স্প্রেডশিটে পৌঁছালে বিপদ: Excel এটিকে সংখ্যা হিসেবে পড়বে, পনেরো অঙ্কের পর রাউন্ড করবে এবং শুরুর যেকোনো শূন্য বাদ দেবে — সমস্যাটি কনভার্শনের নয়, স্প্রেডশিটের তৈরি।

অন্য কিছু দরকার হলে

আকার আন্দাজ না করে যখন ঠিক করে দিতে হয়, তখন jq-ই সঠিক টুল: jq -r '.orders[] | [.id, .customer.name, .total] | @csv' ঠিক যে ফিল্ডগুলো চান, ঠিক যে স্তর থেকে চান, সেখান থেকে বেছে নেয় — এই নিয়ন্ত্রণ স্বয়ংক্রিয় কোনো ফ্ল্যাটেনার দিতে পারে না। এটি স্ট্রিমও করে, তাই ফাইলের সাইজ আর বিবেচ্য থাকে না।

সাধারণভাবে নেস্টেড ডেটার জন্য Miller — mlr --ijson --ocsv flatten — আর Python-এর pandas.json_normalize আপনাকে স্পষ্ট নিয়ন্ত্রণ দেয়, কত গভীর পর্যন্ত সমতল করবেন আর তালিকা নিয়ে কী করবেন। আর JSON যদি টেবিলের মতো না হয়ে সত্যিই স্তরবিন্যস্ত হয়, তবে CSV-তে কনভার্ট করাই হয়তো পুরোপুরি ভুল ভাবনা — একটি ডেটাবেস বা লাইন-বিভাজিত JSON ফাইল সেই কাঠামো রাখে, যা একটি গ্রিড বাদ দিতে চলেছে।

সাধারণ প্রশ্নোত্তর

নেস্টেড JSON কীভাবে কলাম হয়?

প্রতিটি নেস্টেড ফিল্ড তার পাথের নামে একটি কলাম হয়: {"address": {"city": "Oslo"}} থেকে address.city নামে একটি কলাম আসে। কলামগুলো বর্ণানুক্রমে নয়, আপনার ডেটায় প্রথম যে ক্রমে আসে সেভাবে সাজানো হয়, আর যে রেকর্ডে কোনো ফিল্ড নেই, সেখানে সেলটি শুধু খালি থাকে।

অ্যারের কী হয়?

আপনি বেছে নেন: মানগুলো এক সেলে জোড়া দিন ("red; green"), নম্বর দেওয়া কলামে ছড়িয়ে দিন (tags.0, tags.1), JSON লেখা হিসেবে রাখুন, অথবা — অর্ডার লাইনের মতো অবজেক্টের অ্যারের ক্ষেত্রে — প্রতিটি আইটেমের জন্য একটি সারি লিখুন, প্যারেন্ট ফিল্ডগুলো পুনরাবৃত্তি করে।

বড় সংখ্যা কি হুবহু থাকে?

হ্যাঁ। JavaScript যা ধরতে পারে তার চেয়ে বড় আইডি — Twitter, Discord ও ৬৪-বিট ডেটাবেসের আইডি — অঙ্কে অঙ্কে কপি হয়, যেখানে বেশিরভাগ কনভার্টার নিঃশব্দে 1234567890123456789-কে 1234567890123456800-এ রাউন্ড করে ফেলে।

JSON Lines (NDJSON) কি সাপোর্ট করে?

হ্যাঁ। প্রতি লাইনে একটি JSON অবজেক্টওয়ালা ফাইল স্বয়ংক্রিয়ভাবে চেনা হয়, আর প্রতিটি লাইন একটি সারি হয়।

আমার JSON-এ ত্রুটি থাকলে?

আপনি পাবেন সঠিক লাইন ও কলাম, সমস্যার লেখাটি হাইলাইট করা, আর সহজ একটি ব্যাখ্যা — যেমন শেষে বাড়তি কমা, বা JavaScript কোড থেকে কপি করা সিঙ্গেল কোট।

আমার ডেটা কি কোথাও সংরক্ষণ করা হয়?

না। JSON এখানেই পড়া হয় আর CSV এখানেই লেখা হয়; কোথাও কিছু পাঠানো হয় না এবং কিছুই সংরক্ষণ করা হয় না।

জেনে রাখুন: একবারে শুধু একটি অবজেক্টের অ্যারে সারিতে ছড়ানো যায়; অন্য অ্যারেগুলো তাদের সেলেই লেখা হয়। খুব বড় ফাইল আপনার ব্রাউজারের মেমরিতে সীমিত।

এই টুলটি আপনার ওয়েবসাইটে যোগ করুন

যেকোনো ব্লগ, ক্লাসের পেজ বা হেল্প আর্টিকেলের জন্য ফ্রি। একটি স্নিপেট পেস্ট করলেই আপনার ভিজিটররা আপনার পেজেই এটি ব্যবহার করতে পারবেন।