আপনার ডিভাইসেই চলে · আপনার ফাইল কখনও আপনার ডিভাইস ছেড়ে যায় না।
.json ফাইল দিন বা API-র উত্তরটা সরাসরি পেস্ট করুন, আর পান এমন CSV যা Excel, Google Sheets বা যেকোনো import স্ক্রিনে খোলে। উপরের স্তরে একটা লিস্ট থাকলে প্রতিটা আইটেম এক সারি; না থাকলে ডকুমেন্টের সবচেয়ে লম্বা রেকর্ড-লিস্টটা নেওয়া হয়, তাই {"results": [...], "count": 2} থেকে প্রতিটা result-এ এক সারি আসে; কোনো লিস্ট নেই এমন অবজেক্ট এক সারি হয়।
নিয়মগুলো বাঁধা, তাই ফল আগেই অনুমান করা যায়: ভেতরের অবজেক্ট ডট দেওয়া কলাম হয় (address.city), সাধারণ মানের লিস্ট এক ঘরে সেমিকোলন দিয়ে জোড়া হয়, আর রেকর্ডের ভেতরের অবজেক্ট-লিস্ট নম্বর দেওয়া কলাম পায় (items.0.name)। হেডার সারিতে পাওয়া সব কি একসঙ্গে বসে, যে ক্রমে প্রথম দেখা গেছে সেই ক্রমে।
CSV লেখা হয় RFC 4180 মেনে — কমা, উদ্ধৃতি বা লাইন ব্রেক থাকা ঘর ঠিকভাবে উদ্ধৃতিতে বসে — UTF-8-এ, চাইলে Excel-এর জন্য BOM সহ, যাতে বাংলা বা যেকোনো লিপির লেখা ভেঙে না যায়। =, +, - বা @ দিয়ে শুরু হওয়া ঘরের সামনে একটা অ্যাপোস্ট্রফি বসে, যাতে স্প্রেডশিট সেটাকে ফর্মুলা হিসেবে না চালিয়ে লেখা হিসেবে দেখায়। ডাউনলোডের আগে প্রথম 200 লাইন দেখে নিতে পারেন।
যার জন্য নয়: ভেতরে ভেতরে ঢোকানো একটামাত্র অবজেক্ট, যার ভেতরে কোনো লিস্ট নেই — সেটাও কনভার্ট হয়, কিন্তু টেবিল নয়, খুব চওড়া একটা সারি হয়ে।
উপরের স্তরে লিস্ট থাকলে সেটাই সারি। না থাকলে টুল ডকুমেন্টের ভেতরে আট স্তর পর্যন্ত খুঁজে নেয় অবজেক্টের সবচেয়ে লম্বা লিস্টটা। তাই {"response": {"data": {"items": [...]}}} আর {"results": [...], "count": 2, "next": null} দুটো থেকেই প্রতি আইটেমে এক সারি আসে, আর ফলের নিচের লাইন জানায় কোন লিস্ট নেওয়া হলো, যেমন results। লিস্টের পাশের মান, যেমন count আর next, কোনো রেকর্ডের অংশ নয়, তাই বাদ পড়ে।
সমান লম্বা দুটো লিস্ট হলে যেটা ওপরের দিকে, সেটা জেতে। ছোট কোনো লিস্ট চাইলে সেটা তার [ থেকে ] পর্যন্ত কপি করে শুধু ওইটুকু পেস্ট করুন। যে ডকুমেন্টে অবজেক্টের কোনো লিস্ট নেই, সেটা এক সারি হয়, আর একটামাত্র কি-ওয়ালা মোড়ক পেরিয়ে ভেতরে যাওয়া হয়, তাই {"order": {"id": 7, "total": 12}} থেকে কলাম হয় id আর total।
লেখা কপি হয় হুবহু, তারিখও — JSON-এ যে রূপে আছে সেই রূপেই থাকে, যেমন 2024-01-05T10:00:00Z। true আর false লেখা হয় শব্দ হিসেবে। null, ফাঁকা লিস্ট আর ফাঁকা অবজেক্ট সবই হয় ফাঁকা ঘর, তাই CSV-তে এগুলো দেখতে না-থাকা ফিল্ডের মতোই।
সংখ্যা লেখা হয় ঠিক JSON-এ যেমন আছে: 1.0 থাকে 1.0, 1e21 থাকে 1e21, আর 12345678901234567890-এর মতো আইডি উদ্ধৃতিচিহ্ন ছাড়াও প্রতিটা অঙ্ক রাখে। সাধারণ একটা JSON রিডার ওই আইডিকে বানিয়ে দিত 12345678901234567000।
লিস্টের লিস্ট এক স্তর খোলা হয়: "m": [[1, 2], [3]] থেকে আসে m.0 কলাম, তাতে 1;2, আর m.1 কলাম, তাতে 3। যে লিস্টে অবজেক্ট আর সাধারণ মান মেশানো, তার প্রতিটা এন্ট্রি নম্বর পায়, তাই "x": [{"z": 1}, 2] থেকে আসে x.0.z আর x.1।
কলামের নাম বানানো হয় কি-গুলো ডট দিয়ে জুড়ে, তাই যে কি-তে আগে থেকেই ডট আছে, সেটা ভেতরের কোনো কি-র সঙ্গে একই নাম পেয়ে যেতে পারে: {"a.b": 1, "a": {"b": 2}} থেকে দুবার a.b হতো। দ্বিতীয়টার শেষে কিছু যোগ হয়, তাই কলাম হয় a.b আর a.b_2, আর দুটো মানই থাকে।
সাধারণ পছন্দ কমা। যে ভাষায় দশমিক লেখা হয় কমা দিয়ে, সেই ভাষায় সেট করা স্প্রেডশিটের জন্য সেমিকোলন মানানসই, কারণ সেখানে কমা দেওয়া ফাইল প্রায়ই একটা কলামেই খোলে। ট্যাব আর পাইপ সেই সিস্টেমগুলোর জন্য, যারা এগুলো চায়। বিভাজক যা-ই হোক, ফাইলের নাম হয় .csv।
=, +, - বা @ দিয়ে শুরু হওয়া ঘর স্প্রেডশিটের কাছে একটা ফর্মুলা, যা ফাইল খোলার সময়ই চলে যেত। এমন ঘরের সামনে বসে একটা অ্যাপোস্ট্রফি — স্প্রেডশিট নিজেই «এটা লেখা» বোঝাতে যে চিহ্ন ব্যবহার করে — তাই =1+1 লেখা হয় '=1+1। -5 বা +3.5-এর মতো সাধারণ সংখ্যা যেমন আছে তেমনই থাকে।
এই পাতা অন্য ভাষায়: English · العربية · Deutsch · Français · Español · Русский · Português · 中文 · हिन्दी · Türkçe · עברית · فارسی · اردو · Bahasa Indonesia