JSON (JavaScript Object Notation) আধুনিক REST API, GraphQL এন্ডপয়েন্ট, ডাটাবেস কোয়েরি এবং কনফিগারেশন ফাইলের সার্বজনীন ডেটা ইন্টারচেঞ্জ ফরম্যাট। তবে গভীর কী-ভ্যালু হায়ারার্কি হিসেবে ফরম্যাট করা কাঁচা JSON কোড রিভিউ, ডকুমেন্টেশন লেখা বা টিম প্রেজেন্টেশনে দ্রুত স্ক্যান করা কুখ্যাতভাবে কঠিন। টেকনিক্যাল রাইটার, সফটওয়্যার ইঞ্জিনিয়ার, devops স্পেশালিস্ট এবং প্রোডাক্ট ম্যানেজাররা প্রায়ই কাঁচা JSON রেকর্ডকে GitHub README.md ফাইল, Notion ডকুমেন্টেশন পেজ, Jira টিকিট এবং টেকনিক্যাল স্পেসিফিকেশন ডকুমেন্টের জন্য পরিষ্কার, স্ট্রাকচার্ড Markdown টেবিলে রূপান্তর করতে চান।
ট্যাবুলার JSON ফরম্যাট বোঝা
JSON পেলোড পরিষ্কারভাবে Markdown টেবিলে রূপান্তরিত হতে হলে অন্তর্নিহিত ডেটা স্ট্রাকচার আদর্শভাবে রেকর্ডের তালিকা উপস্থাপন করা উচিত। সবচেয়ে সরল ইনপুট হলো অভিন্ন কীসহ অবজেক্ট ধারণ করা JSON অ্যারে:
[
{ "id": "USR-101", "name": "Alice Smith", "role": "Backend Engineer", "status": "Active" },
{ "id": "USR-102", "name": "Bob Jones", "role": "Frontend Developer", "status": "Pending" },
{ "id": "USR-103", "name": "Carol Danvers", "role": "DevOps Lead", "status": "Active" }
]
এই ক্যানোনিক্যাল স্ট্রাকচারে অবজেক্ট জুড়ে প্রতিটি অনন্য কী (id, name, role, status) Markdown টেবিল হেডার কলাম গঠন করে, আর প্রতিটি অবজেক্ট এন্ট্রি সরাসরি টেবিল সারিতে ম্যাপ হয়।
নন-স্ট্যান্ডার্ড বা হেটেরোজেনিয়াস JSON ইনপুট হ্যান্ডলিং
বাস্তব API রেসপন্স ও ডাটাবেস এক্সপোর্ট খুব কমই নিখুঁত অভিন্ন স্ট্রাকচার মেনে চলে। প্রায়ই JSON পেলোডে অনুপস্থিত অ্যাট্রিবিউট, শুধু কিছু অবজেক্টে উপস্থিত ঐচ্ছিক ফিল্ড, বা ডায়নামিক কীসহ ডিকশনারি ম্যাপ থাকে। Utiliome এই এজ কেস নির্বিঘ্নে হ্যান্ডল করে:
- অবজেক্ট জুড়ে হেটেরোজেনিয়াস কী: প্রথম অবজেক্টে
{ "a": 1, "b": 2 }এবং দ্বিতীয় অবজেক্টে{ "b": 2, "c": 3 }থাকলে Utiliome সব অনন্য কী (a,b,c) হেডার সারিতে অ্যাগ্রিগেট করে। নির্দিষ্ট সারিতে অনুপস্থিত প্রপার্টির জন্য টুল গ্রিড অ্যালাইনমেন্ট রাখতে স্বয়ংক্রিয়ভাবে খালি সেল ঢোকায়। - JSON ডিকশনারি অবজেক্ট: ইনপুট অ্যারে না হয়ে অবজেক্টের কী-ভ্যালু ডিকশনারি হলে Utiliome দুই-কলাম 'Key | Value' টেবিল তৈরি করে, টপ-লেভেল কী Key কলামে এবং তাদের কমপ্যাক্ট JSON মান Value কলামে রাখে।
- স্কেলার অ্যারে: সাধারণ স্ট্রিং বা সংখ্যাসূচক মানের অ্যারে পেলে Utiliome পরিষ্কার সিঙ্গেল-কলাম 'Value' টেবিল তৈরি করে, প্রতি আইটেমে একটি সারি।
Markdown রূপান্তর অ্যালগরিদমের ধাপে ধাপে বিশ্লেষণ
হুডের নিচে JSON-কে GitHub-Flavored Markdown (GFM) টেবিলে রূপান্তর করতে অ্যালগরিদমিক ট্রান্সফরমেশনের ক্রম লাগে:
- কী সংগ্রহ ও ডিডুপ্লিকেশন: কনভার্টার JSON অ্যারের প্রতিটি আইটেম ইটারেট করে, স্ট্রাকচারাল অর্ডার বজায় রেখে অনন্য কীর মাস্টার তালিকা সংগ্রহ করে।
- হেডার নির্মাণ: মাস্টার কী তালিকা পাইপ (
|) ডিলিমিটার দিয়ে জোড়া হয়। উদাহরণস্বরূপ,| id | name | role | status |। - ডিলিমিটার লাইন: স্ট্যান্ডার্ড GFM টেবিল সেপারেটর (
|---|) ব্যবহার করে কলাম সীমানা নির্দিষ্ট করে দ্বিতীয় সারি তৈরি হয়। - সারি ম্যাপিং ও ক্যারেক্টার এস্কেপিং: প্রতিটি JSON অবজেক্ট মাস্টার কী তালিকার বিপরীতে মূল্যায়িত হয়। স্ট্রিং মানের বিশেষ Markdown ক্যারেক্টার—বিশেষ করে ভার্টিক্যাল পাইপ (
|) এবং লাইন ব্রেক (\n)—স্বয়ংক্রিয়ভাবে এস্কেপ বা ট্রান্সফর্ম হয় (যেমন নিউলাইনকে<br>-এ রূপান্তর) যাতে Markdown টেবিল সেল সীমানা না ভাঙে।
Utiliome-এর স্বয়ংক্রিয় কনভার্টার ব্যবহার করে ডেভেলপাররা ম্যানুয়াল পাইপ সিনট্যাক্স ফরম্যাটিং, ফরম্যাটিং ত্রুটি এবং টেক্সট এডিটরে কষ্টকর টেবিল সমন্বয় বাদ দেন।
স্ক্রিপ্টেড jq ওয়ার্কফ্লোর জন্য দেখুন jq দিয়ে JSON API রেসপন্স থেকে Markdown টেবিল।