JSON से TOML रूपांतरण डेटा को JavaScript Object Notation से Tom's Obvious Minimal Language में परिवर्तित करता है। JSON संरचित डेटा के लिए curly braces, square brackets और quoted keys का उपयोग करता है। TOML section headers (जिन्हें tables कहते हैं) के साथ एक flat key-value syntax का उपयोग करता है, जो INI फ़ाइल जैसा दिखता है लेकिन strict type-checking के साथ। TOML को खासतौर पर configuration files के लिए डिज़ाइन किया गया था जहाँ human readability machine exchange से ज़्यादा ज़रूरी है।
TOML, Rust (Cargo.toml), Python packaging (pyproject.toml), Hugo static साइट, Netlify deployment settings और कई CLI tools के लिए default configuration format बन गया है। जब आपका स्रोत डेटा JSON के रूप में उपलब्ध हो — किसी API प्रतिक्रिया, निर्यात किए गए कॉन्फ़िगरेशन या उत्पन्न फ़ाइल से — और लक्षित प्रणाली TOML की अपेक्षा रखती हो, तो आपको एक ऐसे कनवर्टर की आवश्यकता है जो JSON ऑब्जेक्ट को TOML तालिकाओं में, JSON ऐरे को TOML ऐरे में map करे और प्रत्येक डेटा प्रकार को सटीकता से सुरक्षित रखे।
JSON डेटा से valid TOML बनाने का सबसे तेज़ तरीका ऑनलाइन JSON से TOML conversion है। यह type mapping अपने आप करता है: JSON strings TOML strings बनती हैं, JSON numbers TOML integers या floats बनते हैं, JSON booleans directly map होते हैं, और JSON objects TOML tables बनते हैं। एकमात्र अपवाद null है — TOML में null प्रकार नहीं होता, इसलिए null मान या तो छोड़ दिए जाते हैं या कनवर्टर के अनुसार रिक्त स्ट्रिंग में बदले जाते हैं।
इस JSON से TOML कनवर्टर का उपयोग क्यों करें?
कॉन्फ़िगरेशन फ़ाइलें TOML की अपेक्षा रखती हैं; API और टूल JSON उत्पन्न करते हैं। यह कनवर्टर दोनों फ़ॉर्मैट के बीच की खाई पाटता है ताकि आप मैन्युअल पुनर्लेखन के बिना डेटा स्थानांतरित कर सकें।
⚡
तत्काल रूपांतरण
JSON चिपकाएँ और TOML आउटपुट तुरंत प्राप्त करें। रूपांतरण टाइप करते समय ही चलता है — कोई सर्वर राउंड-ट्रिप या फ़ाइल अपलोड नहीं।
🔒
गोपनीयता-प्रथम प्रसंस्करण
सभी रूपांतरण आपके ब्राउज़र में स्थानीय रूप से होता है। आपके JSON में मौजूद कॉन्फ़िगरेशन गोपनीय जानकारी, API कुंजियाँ और डेटाबेस क्रेडेंशियल आपके डिवाइस से बाहर नहीं जाते।
🔀
पूर्ण संरचना समर्थन
नेस्टेड ऑब्जेक्ट TOML तालिकाएँ बनते हैं, ऑब्जेक्ट के ऐरे तालिकाओं के ऐरे ([[table]]) बनते हैं, और मिश्रित-प्रकार ऐरे को सही ढंग से संभाला जाता है।
📋
कोई खाता आवश्यक नहीं
पृष्ठ खोलें और रूपांतरण करें। कोई साइनअप, कोई एक्सटेंशन स्थापना या CLI निर्भरता नहीं। आधुनिक ब्राउज़र वाले किसी भी डिवाइस पर कार्य करता है।
JSON से TOML के उपयोग के मामले
Rust परियोजना कॉन्फ़िगरेशन
Cargo.toml Rust projects के लिए dependencies, features और build settings define करता है। JSON dependency lists या generated configuration को directly Cargo.toml format में बदलें।
Python पैकेजिंग (pyproject.toml)
PEP 518 और PEP 621 ने pyproject.toml को Python project metadata file के रूप में standardize किया। मौजूदा JSON package metadata को ज़रूरी TOML structure में बदलें।
स्टैटिक साइट कॉन्फ़िगरेशन
Hugo, Netlify और दूसरे static site generators TOML configuration files use करते हैं। JSON-based setup से migrate करते समय या programmatically configuration generate करते समय, output को TOML में बदलें।
DevOps और इन्फ्रास्ट्रक्चर
Terraform (कुछ प्रदाताओं के लिए), Consul और विभिन्न कंटेनर रनटाइम TOML कॉन्फ़िगरेशन स्वीकार करते हैं। JSON-निर्यात सेटिंग को मान पुनः टाइप किए बिना TOML में बदलें।
API प्रतिक्रिया से कॉन्फ़िगरेशन फ़ाइल
REST API JSON लौटाते हैं। जब आपको उस डेटा को TOML कॉन्फ़िगरेशन के रूप में उपयोग करना हो — उदाहरण के लिए, फ़ीचर फ्लैग या पर्यावरण सेटिंग — तो प्रतिक्रिया चिपकाएँ और वैध TOML प्राप्त करें।
TOML वाक्यविन्यास सीखना
TOML में नए छात्र और डेवलपर परिचित JSON संरचनाएँ चिपका सकते हैं और समतुल्य TOML आउटपुट देख सकते हैं।
JSON बनाम TOML तुलना
JSON और TOML क्षमता में समान हैं परंतु वाक्यविन्यास, प्रकार समर्थन और intended use में भिन्न हैं। यह तालिका वे अंतर दर्शाती है जो रूपांतरण आउटपुट को प्रभावित करते हैं।
TOML में ऐसे नियम हैं जो JSON से भिन्न हैं और रूपांतरण आउटपुट को प्रभावित करते हैं। ये चार समस्याएँ सर्वाधिक भ्रम उत्पन्न करती हैं।
TOML में null प्रकार नहीं है
JSON null को first-class value के रूप में support करता है। TOML में null type बिल्कुल नहीं है। रूपांतरण के समय null मानों को संभालना होता है — या तो कुंजी पूरी तरह छोड़कर, रिक्त स्ट्रिंग उपयोग करके, या कोई संकेत मान चुनकर। इसका अर्थ है कि JSON से TOML और वापस JSON में राउंड-ट्रिप मूल null मान पुनः उत्पन्न नहीं कर सकता।
विषम ऐरे प्रतिबंधित हैं
JSON ऐरे प्रकारों को स्वतंत्र रूप से मिश्रित कर सकते हैं: [1, "two", true]। TOML v1.0.0 में ऐरे के सभी तत्व एक ही प्रकार के होने चाहिए। यदि आपके JSON में मिश्रित-प्रकार के ऐरे हैं, तो कनवर्टर या तो सभी तत्वों को स्ट्रिंग में बदलता है या त्रुटि उत्पन्न करता है। जब स्रोत ऐरे में मिश्रित प्रकार हों तो अपना आउटपुट जाँचें।
गहरे नेस्टेड ऑब्जेक्ट विस्तृत हो जाते हैं
JSON नेस्टेड curly braces से गहरी नेस्टिंग स्वाभाविक रूप से संभालता है। TOML बिंदु-युक्त कुंजियाँ या nested [table.subtable.key] शीर्षकों का उपयोग करता है, जो गहरी नेस्टेड संरचनाओं के लिए लंबे हो सकते हैं। आउटपुट वैध है परंतु मूल JSON से कम संक्षिप्त।
कुंजी नामकरण प्रतिबंध
TOML की सरल कुंजियों में केवल ASCII अक्षर, अंक, डैश और अंडरस्कोर हो सकते हैं। JSON कुंजियाँ कोई भी स्ट्रिंग हो सकती हैं। यदि आपके JSON में रिक्त स्थान, बिंदु या विशेष वर्णों वाली कुंजियाँ हैं, तो उन्हें TOML आउटपुट में उद्धृत करना होगा। अधिकांश कनवर्टर यह स्वचालित रूप से संभालते हैं, परंतु असामान्य वर्णों वाली कुंजियों के लिए आउटपुट सत्यापित करें।
कोड उदाहरण
JSON को TOML में programmatically बदलने के लिए ज़्यादातर languages में TOML serialization library चाहिए। Standard library JSON parse करती हैं; TOML output के लिए dedicated package लगता है।
import json
import tomli_w # pip install tomli_w
json_str = '{"title": "My App", "database": {"host": "localhost", "port": 5432}}'
data = json.loads(json_str)
toml_str = tomli_w.dumps(data)
print(toml_str)
# → title = "My App"
# →
# → [database]
# → host = "localhost"
# → port = 5432
Go
package main
import (
"encoding/json"
"fmt"
"github.com/pelletier/go-toml/v2"
)
func main() {
jsonStr := `{"title":"My App","database":{"host":"localhost","port":5432}}`
var data map[string]interface{}
json.Unmarshal([]byte(jsonStr), &data)
tomlBytes, _ := toml.Marshal(data)
fmt.Println(string(tomlBytes))
// → title = 'My App'
// →
// → [database]
// → host = 'localhost'
// → port = 5432
}
CLI (yj / remarshal)
# Using yj (https://github.com/sclevine/yj)
echo '{"title":"My App","port":3000}' | yj -jt
# → title = "My App"
# → port = 3000
# Using remarshal (pip install remarshal)
echo '{"title":"My App","port":3000}' | remarshal -if json -of toml
# → title = "My App"
# → port = 3000
अक्सर पूछे जाने वाले प्रश्न
क्या JSON से TOML रूपांतरण बिना डेटा हानि के होता है?
अधिकांश डेटा के लिए, हाँ। स्ट्रिंग, पूर्णांक, फ्लोट, बूलियन, ऑब्जेक्ट और ऐरे — सभी के TOML में प्रत्यक्ष समतुल्य हैं। दो अपवाद हैं: null (TOML में null प्रकार नहीं है, इसलिए null मान छोड़े या बदले जाते हैं) और मिश्रित-प्रकार ऐरे (TOML में एक समान ऐरे तत्व प्रकार आवश्यक हैं)। यदि आपका JSON इन दो प्रारूपों से बचता है, तो रूपांतरण पूर्णतः बिना हानि के होता है।
TOML में JSON null मानों का क्या होता है?
TOML में null प्रकार नहीं है। कनवर्टर सामान्यतः null मान वाली कुंजियाँ आउटपुट से छोड़ देते हैं, क्योंकि TOML में "कुंजी मौजूद है परंतु कोई मान नहीं" निरूपित करने का कोई तरीका नहीं है। कुछ कनवर्टर रिक्त स्ट्रिंग उपयोग करने का विकल्प देते हैं। यदि आपके डेटा में null मान महत्वपूर्ण हैं तो अपना आउटपुट जाँचें।
क्या TOML नेस्टेड JSON ऑब्जेक्ट निरूपित कर सकता है?
हाँ। JSON ऑब्जेक्ट TOML तालिकाएँ बनते हैं। {"database": {"host": "localhost"}} जैसा नेस्टेड ऑब्जेक्ट host = "localhost" के साथ [database] तालिका शीर्षक में बदलता है। बिंदु-युक्त कुंजियों या नेस्टेड तालिका शीर्षकों के माध्यम से मनमानी नेस्टिंग गहराई समर्थित है।
Rust और Python TOML का उपयोग JSON की बजाय क्यों करते हैं?
TOML comments support करता है, जो configuration options document करने के लिए ज़रूरी हैं। यह flat key-value settings के लिए भी clean output देता है, जो package metadata का ज़्यादातर हिस्सा होती हैं। JSON comments allow नहीं करता (RFC 8259), जिससे manually edit होने वाले configuration format के रूप में उसे maintain करना मुश्किल हो जाता है।
TOML दिनांक और समय को कैसे संभालता है?
TOML में मूल datetime प्रकार हैं: ऑफसेट datetime (2024-01-15T10:30:00Z), स्थानीय datetime, स्थानीय दिनांक और स्थानीय समय। JSON में कोई दिनांक प्रकार नहीं है — दिनांक स्ट्रिंग के रूप में संग्रहीत होते हैं। JSON से TOML में बदलते समय, दिनांक जैसी स्ट्रिंग तब तक स्ट्रिंग ही रहती हैं जब तक कनवर्टर स्पष्ट रूप से ISO 8601 प्रारूप का पता लगाकर उन्हें बदल न दे।
क्या इस टूल में गोपनीय जानकारी और क्रेडेंशियल चिपकाना सुरक्षित है?
हाँ। रूपांतरण पूरी तरह आपके ब्राउज़र में JavaScript उपयोग करके होता है। कोई डेटा किसी सर्वर को नहीं भेजा जाता। आप इसे सत्यापित कर सकते हैं — ब्राउज़र के डेवलपर टूल खोलें, Network टैब पर जाएँ और पुष्टि करें कि रूपांतरण के दौरान कोई अनुरोध नहीं किया जाता।
आउटपुट किस TOML संस्करण का अनुसरण करता है?
आउटपुट TOML v1.0.0 follow करता है, जो January 2021 में release हुआ और current stable specification है। यह version uniform array types enforce करता है, dotted keys support करता है और datetime formats define करता है। Specification toml.io पर maintain किया जाता है।