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

বাম দিকে JSON অবজেক্ট পেস্ট করুন, ডান দিকে TOML পান। @iarna/toml এর মাধ্যমে কঠোর স্পেসিফিকেশন মেনে চলা। কোনো আপলোড নেই।

  1. বাম টেক্সট এরিয়ায় JSON অবজেক্ট পেস্ট করুন।
  2. "TOML-এ রূপান্তর" ক্লিক করুন। শীর্ষ স্তর JSON অবজেক্ট হতে হবে — অ্যারে নয়।
  3. TOML আউটপুট কপি বা ডাউনলোড করুন।
  4. রেকর্ডের তালিকার জন্য, TOML টেবিল অ্যারে ব্যবহার করুন — প্রথমে `{ items: [...] }` দিয়ে মুড়ুন।
এটি কী করে?

@iarna/toml এর মাধ্যমে JSON অবজেক্টকে TOML 1.0-অনুগত ডকুমেন্টে রূপান্তর করে। নেস্টেড অবজেক্ট `[section]` হেডার হয়; অবজেক্ট অ্যারে `[[items]]` অ্যারে-অফ-টেবিল ব্লক হয়; স্ট্রিং, সংখ্যা, বুলিয়ান এবং ISO 8601 ডেটটাইম স্ট্রিং TOML প্রিমিটিভে ম্যাপ হয়। আউটপুট ক্যাননিকাল ক্রমে সাজানো হয় — কঠোর TOML পার্সারের সাথে সামঞ্জস্যের জন্য কী সাব-টেবিলের আগে আসে।

উদাহরণ

JSON ইনপুট:

{
  "name": "Ada",
  "active": true,
  "address": {
    "city": "London"
  }
}

TOML আউটপুট:

name = "Ada"
active = true

[address]
city = "London"

JSON থেকে TOML-এ সাধারণ ফাঁদ

JSON-এর তুলনায় TOML-এর শীর্ষ স্তরের নিয়ম কঠোর। নিচের প্যাটার্নগুলো ব্যাখ্যা করে কেন একটি JSON মান যা "কাজ করা উচিত" তা ব্যর্থ হতে পারে।

  • শীর্ষ স্তর অ্যারে। TOML একটি শীর্ষ স্তরের JSON অ্যারে উপস্থাপন করতে পারে না। এটি মুড়ুন: `{"items": [...]}`। ফলাফল `[[items]]` এর অধীনে TOML অ্যারে-অফ-টেবিল হয়।
  • শীর্ষ স্তর স্কেলার। একটি খালি `42` বা `"hello"` JSON ডকুমেন্টের TOML-এ সংযুক্ত হওয়ার জন্য কোনো কী নেই। এটি একটি অবজেক্টে মুড়ুন: `{"value": 42}`।
  • null মান। TOML-এর কোনো null প্রকার নেই। সিরিয়ালাইজার JSON মান null এমন কী সম্পূর্ণ বাদ দেয়। যদি "স্পষ্টভাবে কিছুই নয়" উপস্থাপন করতে হয়, খালি স্ট্রিং `""` বা একটি সেন্টিনেল মান ব্যবহার করুন, আপনার ডাউনস্ট্রিম কোডের উপর নির্ভর করে।
  • মিশ্র-প্রকার অ্যারে। TOML 1.0 `[1, "two"]` অনুমতি দেয়, কিন্তু লিগ্যাসি 0.5 পার্সার দেয় না। যদি আপনার TOML 0.5 টুলিংয়ের মাধ্যমে রাউন্ড-ট্রিপ করতে হয়, রূপান্তরের আগে JSON-এ অ্যারে একসঙ্গে রাখুন।
  • TOML আউটপুটে ডটসহ কী। `"my.key"` এর মতো একটি JSON কী TOML "ডটেড কী" পথ হয়ে যায়, যা TOML পার্সাররা নেস্টেড হিসাবে ব্যাখ্যা করবে। কী নামে আক্ষরিক ডট সংরক্ষণ করতে, সিরিয়ালাইজার এটি কোট করে: `"my.key" = ...` — কিন্তু গ্রাহকরা এখনও এটিকে পথ হিসাবে পার্স করতে পারে।
  • NaN / Infinity। TOML 1.0 `nan`, `inf`, `-inf` লিটারাল সমর্থন করে। JSON এগুলিকে উপস্থাপন করে না — তারা সাধারণত স্ট্রিং `"NaN"`, `"Infinity"` ইত্যাদি হিসাবে আসে। আপনি যদি সত্যিকারের TOML ফ্লোট বিশেষ মান চান তবে ম্যানুয়ালি রূপান্তর করুন।
প্রায়শই জিজ্ঞাসিত প্রশ্ন

তারিখ কীভাবে উপস্থাপিত হয়?

JSON তারিখ ISO 8601 স্ট্রিং, যেমন `"2026-04-26T12:00:00Z"`। সিরিয়ালাইজার তাদের TOML-এ স্ট্রিং হিসাবে রাখে — নেটিভ ডেটটাইম প্রকার হিসাবে নয়। নেটিভ TOML ডেটটাইম পেতে, আপনাকে JavaScript সাইডে সঠিক টাইপ মার্কারের সাথে মান প্রি-প্রসেস ও এমিট করতে হবে।

গভীরভাবে নেস্টেড অবজেক্ট কি চ্যাপ্টা হয়?

না — সেগুলি নেস্টেড `[a.b.c]` হেডার হয়। প্রতিটি নেস্টিং স্তর একটি ডট-জোড়া হেডার পথ হয়। অত্যন্ত গভীর গঠনের জন্য, আউটপুটে দীর্ঘ হেডার লাইন থাকতে পারে; এটি কেবল TOML কীভাবে গভীরতা প্রকাশ করে তার পদ্ধতি।

কী-এর ক্রম কি সংরক্ষিত হবে?

বেশিরভাগই। সিরিয়ালাইজার ক্রমকে ক্যাননিকালাইজ করে যাতে প্রিমিটিভগুলি সাব-টেবিলের আগে আসে (একটি TOML নিয়ম)। প্রতিটি স্তরের মধ্যে, JSON সন্নিবেশ ক্রম সংরক্ষিত থাকে।

আমি কীভাবে আউটপুটে TOML ইনলাইন টেবিল পাব?

আপনি পারবেন না — সিরিয়ালাইজার সর্বদা `[section]` ব্লক হেডার ব্যবহার করে, কখনো ইনলাইন টেবিল নয়। আপনি যদি ইনলাইন আউটপুট চান, ফলাফল পোস্ট-প্রসেস করুন। ইনলাইন টেবিল TOML-এর পঠনযোগ্যতা বৈশিষ্ট্য, ভিন্ন ডেটা আকার নয়।

আমার JSON কি আপলোড হয়?

না। সব আপনার ব্রাউজারে চলে — আপনার ইনপুট এই পেজের JavaScript দ্বারা পার্স ও সিরিয়ালাইজ হয় এবং কখনো কোনো সার্ভারে পাঠানো হয় না।

আমি কি JSON → TOML → JSON রাউন্ড-ট্রিপ করতে পারি?

সমর্থিত প্রকারের জন্য (স্ট্রিং, সংখ্যা, বুলিয়ান, নেস্টেড অবজেক্ট, অবজেক্টের অ্যারে), হ্যাঁ। রাউন্ড-ট্রিপ null মান হারায় (TOML-এ null নেই) এবং কী ক্রম স্বাভাবিক করতে পারে।