JSON, CSV, YAML और XML के बीच डेटा बदलने पर क्या बदलता है?
चारों फ़ॉर्मेट डेटा को अलग तरह से मॉडल करते हैं: JSON और YAML नेस्टिंग व टाइप रखते हैं, CSV स्ट्रिंग की सपाट तालिका है, और XML एलिमेंट व एट्रिब्यूट में फ़र्क करता है। इसलिए कन्वर्टर को फ़ैसले लेने पड़ते हैं — नेस्टेड ऑब्जेक्ट कॉलम में कैसे सपाट हों, "42" और "true" का टाइप क्या हो, एट्रिब्यूट कहाँ जाएँ — और सही फ़ैसला उस पर निर्भर है जो रिसीविंग सिस्टम अपेक्षित करता है।
JSON से YAML कैसे इस्तेमाल करें
- JSON डॉक्यूमेंट पेस्ट करें।
- इंडेंटेशन, ब्लॉक या फ़्लो स्टाइल, और सभी स्ट्रिंग कोट करनी हैं या नहीं — यह चुनें।
- YAML को अपने मैनिफ़ेस्ट, पाइपलाइन या OpenAPI फ़ाइल में कॉपी करें।
JSON से YAML की खूबियाँ
- किसी भी JSON वैल्यू को YAML 1.2 में बदलता है
- अस्पष्ट स्केलर (true, 0123, null, तारीख़ें) को कोट करता है ताकि टाइप बने रहें
- ब्लॉक या फ़्लो कलेक्शन स्टाइल, 2 या 4 स्पेस इंडेंटेशन
- मल्टी-लाइन स्ट्रिंग लिटरल ब्लॉक स्केलर के रूप में दी जाती हैं
- हर स्ट्रिंग को कोट करने का वैकल्पिक विकल्प
- लाइव कन्वर्ज़न, कॉपी और डाउनलोड के साथ
JSON से YAML का उदाहरण
JSON से Kubernetes जैसा मैनिफ़ेस्ट
इनपुट:
{"apiVersion":"v1","kind":"ConfigMap","data":{"LOG_LEVEL":"info","DEBUG":"true"}}आउटपुट:
apiVersion: v1
kind: ConfigMap
data:
LOG_LEVEL: info
DEBUG: "true"JSON से YAML के बारे में अक्सर पूछे जाने वाले सवाल
क्या "true" या "0123" जैसी स्ट्रिंग स्ट्रिंग ही रहेंगी?
हाँ। जिन वैल्यू को YAML बूलियन, संख्या, null या तारीख़ मान लेता, उन्हें अपने आप कोट कर दिया जाता है ताकि राउंड ट्रिप के बाद भी उनका टाइप बना रहे।
ब्लॉक और फ़्लो स्टाइल में क्या अंतर है?
ब्लॉक स्टाइल हर लिस्ट आइटम और की को अलग लाइन पर रखता है (आम Kubernetes/CI वाला रूप)। फ़्लो स्टाइल छोटे कलेक्शन इनलाइन लिखता है, जैसे [a, b] और {x: 1}।
क्या मल्टी-लाइन स्ट्रिंग समर्थित हैं?
न्यूलाइन वाली स्ट्रिंग लिटरल ब्लॉक स्केलर (|) के रूप में दी जाती हैं, जिससे वे पढ़ने में आसान और बिल्कुल सटीक रहती हैं।
क्या आउटपुट वैध YAML 1.2 है?
हाँ। कन्वर्टर core YAML 1.2 स्कीमा इस्तेमाल करता है, जिसकी अपेक्षा Kubernetes, GitHub Actions, Docker Compose और OpenAPI टूलिंग करते हैं।
तकनीकी नोट्स
Serialization yaml पैकेज से YAML 1.2 core schema और lineWidth 0 के साथ होती है, इसलिए लंबी स्ट्रिंग कभी fold नहीं होतीं। Scalar को डबल कोट वहीं मिलते हैं जहाँ 1.2 उन्हें ग़लत पढ़ता — "true", "null", "0123", "1e3", ख़ाली स्ट्रिंग, #, &, *, [ जैसे indicator से शुरू या ": " वाली वैल्यू। चूँकि 1.2 में yes, no, on, off और ISO तारीख़ें सादी स्ट्रिंग हैं, वे बिना कोट रहती हैं; PyYAML जैसे YAML 1.1 consumer उन्हें अलग पढ़ते हैं।
Newline वाली स्ट्रिंग literal block scalar बनती हैं (trailing newline के अनुसार | या |-), block sequence parent key के नीचे indent होते हैं, और anchor/alias कभी नहीं निकलते। 'Flow style' root समेत हर collection पर लागू है, इसलिए पूरा दस्तावेज़ एक { … } लाइन में सिमटता है। 'Quote all strings' सिर्फ़ वैल्यू छूता है — key ज़रूरत पर ही कोट होती हैं — और JSON.parse पहले चलने से 2^53 − 1 से बड़े integer पहले ही गोल होते हैं।
संदर्भ
- RFC 8259: The JavaScript Object Notation (JSON) Data Interchange FormatJSON का व्याकरण: ऑब्जेक्ट, ऐरे, स्ट्रिंग, नंबर, तीन लिटरल और इंटरचेंज एन्कोडिंग के रूप में UTF-8।
- RFC 4180: Common Format and MIME Type for Comma-Separated Values (CSV) FilesCSV के आम नियम: कॉमा सेपरेटर, CRLF लाइन एंड, और कॉमा, कोट या लाइन ब्रेक वाले फ़ील्ड की क्वोटिंग।
- YAML Ain't Markup Language (YAML™) version 1.2.2YAML 1.2 का डेटा मॉडल और सिंटैक्स, और JSON से उसका संबंध (हर JSON दस्तावेज़ वैध YAML 1.2 है)।