आँकड़ों और विज्ञापन के लिए कुकीज़
हम आँकड़ों और विज्ञापन के लिए कुकीज़ इस्तेमाल करते हैं, दोनों Google को जाती हैं। मना करने से आपको दिखने वाली किसी चीज़ में कोई फ़र्क़ नहीं पड़ता।निजता पेज पढ़ें
यहाँ आप JSON को YAML में बदलते हैं, मुफ़्त और बिना खाते के: फ़ाइल ऊपर छोड़िए और कुछ ही सेकंड में नतीजा डाउनलोड के लिए तैयार मिलेगा। कन्वर्ज़न आपके अपने ब्राउज़र के भीतर होता है, इसलिए फ़ाइल कभी अपलोड नहीं होती। यह Windows, macOS और Linux पर वैसे ही चलता है जैसे iPhone और Android पर, और कनेक्शन काट देने पर भी चलता रहता है।
एक बार में 100 फ़ाइलें। फ़ॉर्मेट अलग-अलग हों तो भी चलेगा।
ये एक के बाद एक बदलती हैं और साथ में एक ZIP बनकर उतरती हैं।
JSON से YAML
यह इस पेज समूह का इकलौता रूपांतरण है जहाँ "क्या क़ीमत चुकानी है" का जवाब सचमुच कुछ नहीं है। YAML 1.2, 2009 में प्रकाशित, हर वैध JSON दस्तावेज़ को अपना subset बताता है। रूपांतरण वही tree एक अलग style में दोबारा serialise करता है।
यह बाक़ी पेज को असामान्य बनाता है। कोई lossy कदम चेतावनी देने को नहीं, कोई flattening नहीं। इसकी बजाय वहाँ नतीजा कैसे पढ़ा जाएगा इसके बारे में सवाल हैं, और वे किसी भी डेटा नुक़सान से ज़्यादा मायने रखते हैं।
Writer YAML 1.2 का पालन करता है, जिसके तहत no, yes, on और off साधारण strings हैं। तो JSON value "no", बिना quote के no लिखी जाती है, और इसे 1.2 parser से वापस पढ़ने पर वही string मिलती है।
YAML 1.1 असहमत है। यह इन्हीं शब्दों को booleans के रूप में resolve करता है, और PyYAML — जिसे Ansible और बहुत सा Python tooling इस्तेमाल करता है — 1.1 reader है। अगर किसी data में value no है, converting के बाद उन्हें हाथ से quote कीजिए।
Quoting हर value के हिसाब से तय होती है, सिर्फ़ वहाँ जहाँ bare रूप कुछ और पढ़ी जाए। "1.0" quote होता है क्योंकि बिना quote के यह संख्या है। "null" quote होता है क्योंकि बिना quote यह null value है।
नियम consistent है और यह 1.2 का नियम है। जो कुछ writer quote करता है वह सब YAML 1.2 के तहत मतलब बदलता; जिन शब्दों को यह bare छोड़ता है वे सिर्फ़ 1.1 के तहत मतलब बदलते हैं।
JSON string में literal newline नहीं हो सकता, इसलिए किसी JSON manifest में embed किया shell script एक विशाल लाइन होती है जिसमें breaks की जगह backslash-n होता है। ऐसे बदलाव की समीक्षा करना मुमकिन नहीं होता।
YAML writer उन values को block scalars के रूप में लिखता है — एक pipe character, फिर टेक्स्ट अपनी indented लाइनों पर, breaks अपनी जगह पर। बारह-लाइन का entrypoint script बारह लाइनों में बदल जाता है।
Objects का JSON array उस dash-prefixed list में बदल जाता है जिसमें हर Kubernetes और GitHub Actions उदाहरण लिखा है — hyphen, फिर पहली key उसी लाइन पर और बाक़ी उसके नीचे indented।
यह सुधार review के लिए है, correctness के लिए नहीं, और review ही फ़ाइल का मक़सद है। छह deployment steps देखता reviewer braces गिने बिना उनकी सीमाएँ देख सकता है।
JSON कोई comment नहीं रखता, जो RFC 8259 की grammar से निकलता है, किसी parser की चूक से नहीं। YAML इन्हें कहीं भी रख सकता है जहाँ लाइन hash से शुरू हो सके। किसी generated manifest को YAML में बदलना अक्सर syntax के बारे में नहीं होता।
आउटपुट में कोई comment नहीं, क्योंकि input के पास देने को कुछ नहीं था। इन्हें जोड़ना पहला सार्थक edit है, और सबसे उपयोगी वे हैं जो कभी field की व्याख्या नहीं होते — बल्कि यह बताते क्यों replica count तीन है।
YAML में anchors और aliases हैं, जो किसी एक block को एक बार परिभाषित करने और तीन जगह इस्तेमाल करने देते हैं, और एक फ़ाइल में तीन hyphen से अलग किए कई documents हो सकते हैं। इनमें से कोई भी JSON स्रोत से नहीं आ सकता।
तो बदली फ़ाइल सही और flat है — JSON में जो दोहराया गया वह YAML में भी दोहराया गया है। दोहराव को anchor से हटाना एक हाथ से किया गया edit है।
Writer keys उसी क्रम में रखता है जिसमें वे आईं, इसलिए apiVersion, kind और metadata अपनी जगह रहते हैं, sorted नहीं होते। न JSON न YAML mapping order को अर्थपूर्ण मानते हैं, पर alphabetised keys वाला manifest पढ़ने में कठिन है।
यह जानना ज़रूरी है जब आउटपुट repository में पहले से मौजूद फ़ाइल के साथ तुलना करें। अगर दोनों सिर्फ़ order में अलग हैं, फ़र्क़ इस रूपांतरण से नहीं, जो JSON बनाया उससे आया।
सबसे सस्ती जाँच टूल की अपनी dry run है — kubectl apply with --dry-run=client, docker compose config। हर एक दस्तावेज़ parse करता है और वह आकार बताता है जो उसने पाया।
quoting समस्या पकड़ने वाली जाँच अलग है और जान-बूझकर करनी होती है — बदली फ़ाइल में बिना quote yes, no, on, off ढूँढिए और हर एक के लिए सोचिए कि क्या कोई YAML 1.1 reader इसे कभी देखेगा।
रूपांतरण इसी टैब में चलता है। JSON ब्राउज़र के अपने parser से पढ़ी जाती है और YAML किसी on-demand loaded library से लिखी जाती है, इसलिए कोई request दस्तावेज़ कहीं नहीं ले जाता।
किसी cluster से निकाला manifest internal hostnames, registry paths और infrastructure की आकृति रखता है, और कई संगठन इसे किसी सार्वजनिक web converter में paste करना घटना मानते हैं। यहाँ paste करने या भेजने को कुछ नहीं है।
| JSON | YAML | |
|---|---|---|
| पूरा नाम | JavaScript Object Notation | YAML Ain't Markup Language |
| फ़ाइल एक्सटेंशन | .json | .yaml, .yml |
| मीडिया टाइप | application/json | application/yaml |
| पहली बार प्रकाशित | 2001 | 2001 |
| विनिर्देश | RFC 8259 | YAML 1.2 |
| लाइसेंस | खुला मानक | खुला मानक |
| आज की स्थिति | मौजूदा | मौजूदा |
| ब्राउज़र में खुलता है | हर ब्राउज़र | कोई ब्राउज़र नहीं |
| इसकी जगह विचारणीय | XML, NDJSON | TOML |
कुछ नहीं खोता। JSON और YAML — दोनों अपनी सामग्री बिना नुक़सान सँभालते हैं: यह कन्वर्ज़न पैकिंग बदलता है, गुणवत्ता नहीं, और आप इसे दोहरा सकते हैं बिना इस डर के कि नुक़सान जमा होता जाएगा।
YAML को कोई भी ब्राउज़र नहीं पढ़ता। इस लिहाज़ से दोनों में यही कम जगह चलने वाला है। भेजने से पहले देख लीजिए कि पाने वाला इसे लेता भी है या नहीं।
Visual Studio Code JSON और YAML — दोनों पढ़ लेता है, इसलिए आप नतीजे को असली फ़ाइल के बग़ल में रखकर देख सकते हैं, बिना दूसरा प्रोग्राम खोले।
JSON 2001 में आया। यह RFC 8259 में तय किया गया है, और अगर फ़ाइल को उस औज़ार से ज़्यादा जीना है जिसने उसे लिखा, तो यह बात क़ीमती है।
YAML 2001 से चला आ रहा है, और YAML 1.2 में तय किया गया है। Visual Studio Code और yq इस फ़ॉर्मेट को पढ़ लेते है।
नहीं। यह कन्वर्ज़न पूरी तरह आपके ब्राउज़र में होता है, इसलिए फ़ाइल आपके डिवाइस से बाहर नहीं जाती। आप ख़ुद जाँच सकते हैं: डेवलपर टूल्स का नेटवर्क टैब खोलिए और कुछ बदल कर देखिए। आपको पेज ख़ुद दिखेगा और आँकड़ों तथा विज्ञापन के वे अनुरोध दिखेंगे जिनसे इस सेवा का ख़र्च निकलता है — और एक भी ऐसा अनुरोध नहीं जो आपकी फ़ाइल साथ ले जा रहा हो।
हाँ। न खाता, न वॉटरमार्क, और न कोई रोज़ का कोटा जो ख़त्म हो: यह आपकी अपनी मशीन पर चलता है, इसलिए आप जितनी बार चाहें लौट सकते हैं। ब्राउज़र 100 MB तक की फ़ाइलें सँभालता है, एक बार में 100।
नहीं। YAML वही सामग्री बिना कुछ फेंके सँभालता है: नतीजा गुणवत्ता में असली फ़ाइल जैसा ही होता है।
YAML को कोई भी ब्राउज़र नहीं पढ़ता। इस लिहाज़ से दोनों में यही कम जगह चलने वाला है। भेजने से पहले देख लीजिए कि पाने वाला इसे लेता भी है या नहीं।
कुछ नहीं खोता। JSON और YAML — दोनों अपनी सामग्री बिना नुक़सान सँभालते हैं: यह कन्वर्ज़न पैकिंग बदलता है, गुणवत्ता नहीं, और आप इसे दोहरा सकते हैं बिना इस डर के कि नुक़सान जमा होता जाएगा।