TOML থেকে JSON

কনফিগারযোগ্য ইন্ডেন্টেশন এবং কমপ্যাক্ট-মোড আউটপুটসহ TOML ডকুমেন্টকে JSON-এ রূপান্তর করুন।

কনফিগারযোগ্য ইন্ডেন্টেশন এবং কমপ্যাক্ট-মোড আউটপুটসহ TOML ডকুমেন্টকে JSON-এ রূপান্তর করুন। কনফিগারযোগ্য ইন্ডেন্টেশন এবং কমপ্যাক্ট-মোড আউটপুটসহ TOML ডকুমেন্টকে JSON-এ রূপান্তর করুন।

আউটপুট

পটভূমি

কেন TOML-কে JSON হিসাবে চাওয়া হতে পারে

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

রূপান্তরটি বেশিরভাগ ক্ষেত্রে লসলেস, কারণ উভয় ফরম্যাটই একই প্রিমিটিভ উপস্থাপনের জন্য যথেষ্ট অভিব্যক্তিপূর্ণ। কয়েকটি TOML-নির্দিষ্ট টাইপ (মাল্টি-লাইন স্ট্রিং, তারিখ) সাধারণ স্ট্রিংয়ে রূপান্তরিত হয়; কয়েকটি JSON-নির্দিষ্ট মান (null) JSON লিটারেল null-এ রূপান্তরিত হয়, যার TOML-এ কোনো নেটিভ সমতুল্য নেই।

জানার মতো বৈশিষ্ট্য

কনভার্টারটি একটি প্রিটি-প্রিন্ট টগল (2/4-স্পেস ইন্ডেন্টেশনসহ) এবং একটি কমপ্যাক্ট মোড (একক লাইন) অফার করে। খুব বড় কনফিগ ফাইলের জন্য, কমপ্যাক্ট আউটপুট একটি curl রিকোয়েস্ট বডিতে পেস্ট করা অনেক সহজ। সোয়াপ বাটনটি JSON আউটপুটকে আবার ইনপুট বক্সে সরিয়ে দেয় যাতে আপনি পুনরায় সম্পাদনা করে আবার TOML হিসাবে রপ্তানি করতে পারেন।

ওয়ার্কফ্লো টিপস

রূপান্তরের পরে, ডাউনস্ট্রিম টুলে পাঠানোর আগে একটি স্কিমা ভ্যালিডেটর (ajv, jsonschema) দিয়ে JSON যাচাই করুন। TOML পার্সারটি কঠোর: এটি অঙ্ক দিয়ে শুরু হওয়া আনকোটেড স্কেলার, মন্তব্যসহ ইনলাইন টেবিল এবং অন্যান্য সাধারণ ভুল প্রত্যাখ্যান করবে। উৎস ডকুমেন্টটি ঠিক করতে ত্রুটি বার্তাগুলো ব্যবহার করুন, JSON নয়।

ব্যবহারিক উদাহরণ

ধরুন আপনি একটি pyproject.toml স্নিপেট রক্ষণাবেক্ষণ করেন যা আপনার টুলের রানটাইম কনফিগারেশন [tool.beetools]-এর অধীনে তালিকাভুক্ত করে। একই কনফিগারেশন একটি JavaScript বিল্ড পাইপলাইনে খাওয়াতে যা কেবল JSON গ্রহণ করে, স্নিপেটটি এই কনভার্টারের মাধ্যমে চালান। আউটপুট টেবিল হায়ারার্কি সংরক্ষণ করে, তাই [tool.beetools.cache]-এর মতো একটি নেস্টেড ব্লক { "tool": { "beetools": { "cache": { ... } } } } হয়ে যায়। ডটেড কীগুলো বের হওয়ার পথে নেস্টেড অবজেক্টে সংকুচিত হয়, যা TOML পার্সার প্রাথমিকভাবে যেভাবে তৈরি করেছিল তা প্রতিফলিত করে। একবার আপনার JSON হয়ে গেলে, ডাউনস্ট্রিমে পাঠানোর আগে ajv বা jsonschema দিয়ে এটি যাচাই করুন -- কনভার্টারটি কেবল সিনট্যাক্স অনুবাদ করে।

আন্তরিকভাবে নির্মিত। TOML public/assets-এ বান্ডল করা BSD-3 smol-toml লাইব্রেরি দিয়ে পার্স করা হয়, তারপর নেটিভ JSON.stringify এর মাধ্যমে JSON হিসাবে নির্গত হয়। কোনো আপলোড ঘটে না।

সচরাচর জিজ্ঞাসিত প্রশ্ন

কনভার্টারটি কি TOML 1.0 বৈশিষ্ট্য সমর্থন করে?
হ্যাঁ। কনভার্টারটি TOML 1.0 পার্স করে, যার মধ্যে টেবিলের অ্যারে (`[[name]]`), ইনলাইন টেবিল (`{ key = "value" }`) এবং ডটেড কী (`a.b.c`) রয়েছে।
TOML তারিখগুলো JSON-এ কীভাবে নির্গত হয়?
সময়ের উপাদানবিহীন তারিখগুলো `YYYY-MM-DD` আকারে JSON স্ট্রিং হয়। ডেটটাইমগুলো `YYYY-MM-DDTHH:MM:SS[.fraction][Z|+offset]` হয়। গ্রহণকারী JSON কনজিউমার সেগুলো তাদের ভাষার তারিখ লাইব্রেরি দিয়ে পার্স করতে পারে।
TOML মাল্টি-লাইন স্ট্রিং সম্পর্কে কী?
এমবেডেড নিউলাইন অক্ষরসহ নিয়মিত JSON স্ট্রিং হিসাবে নির্গত হয়। JSON সঠিক লিটারাল-স্টাইল সংরক্ষণ করতে পারে না, তবে পার্স করা মানটি অভিন্ন।
কনভার্টারটি কি ডটেড কী সামলাতে পারে?
হ্যাঁ। `a.b.c = 1` হয়ে যায় `{ "a": { "b": { "c": 1 } } }`। কনভার্টারটি প্রতিটি ডটেড কীকে নেস্টেড অবজেক্টে সম্প্রসারিত করে।
কনভার্টারটি কি অবৈধ TOML প্রত্যাখ্যান করবে?
হ্যাঁ। পার্সারটি প্রথম অবৈধ টোকেনে একটি লাইন/কলাম পয়েন্টারসহ ত্রুটি উত্থাপন করে। উৎস TOML ঠিক করুন এবং আবার চেষ্টা করুন।
আমার TOML কি আপলোড হয়?
না। বান্ডল করা smol-toml লাইব্রেরির মাধ্যমে পার্সিং স্থানীয়ভাবে ঘটে; ব্রাউজার থেকে কিছুই বের হয় না।