JSON को YAML में बदलें

यहाँ आप JSON को YAML में बदलते हैं, मुफ़्त और बिना खाते के: फ़ाइल ऊपर छोड़िए और कुछ ही सेकंड में नतीजा डाउनलोड के लिए तैयार मिलेगा। कन्वर्ज़न आपके अपने ब्राउज़र के भीतर होता है, इसलिए फ़ाइल कभी अपलोड नहीं होती। यह Windows, macOS और Linux पर वैसे ही चलता है जैसे iPhone और Android पर, और कनेक्शन काट देने पर भी चलता रहता है।

  • कहाँ चलता है आपके ब्राउज़र में। फ़ाइल कभी अपलोड नहीं होती।
  • बिना नुक़सान कुछ नहीं छोड़ा जाता। JSON में जो था, YAML में ठीक वही रहता है।
  • फ़ाइल आकार की सीमा हर फ़ाइल 100 MB तक, मुफ़्त, बिना खाते के।

एक बार में 100 फ़ाइलें। फ़ॉर्मेट अलग-अलग हों तो भी चलेगा।

YAML JSON का superset है, इसलिए कुछ नहीं खोता

यह इस पेज समूह का इकलौता रूपांतरण है जहाँ "क्या क़ीमत चुकानी है" का जवाब सचमुच कुछ नहीं है। YAML 1.2, 2009 में प्रकाशित, हर वैध JSON दस्तावेज़ को अपना subset बताता है। रूपांतरण वही tree एक अलग style में दोबारा serialise करता है।

यह बाक़ी पेज को असामान्य बनाता है। कोई lossy कदम चेतावनी देने को नहीं, कोई flattening नहीं। इसकी बजाय वहाँ नतीजा कैसे पढ़ा जाएगा इसके बारे में सवाल हैं, और वे किसी भी डेटा नुक़सान से ज़्यादा मायने रखते हैं।

बिना quote वाला "no" शब्द ही वजह है इस रूपांतरण को दोबारा देखना पड़े

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 कीजिए।

YAML writer कौन-सी values quote करता है, और क्यों

Quoting हर value के हिसाब से तय होती है, सिर्फ़ वहाँ जहाँ bare रूप कुछ और पढ़ी जाए। "1.0" quote होता है क्योंकि बिना quote के यह संख्या है। "null" quote होता है क्योंकि बिना quote यह null value है।

नियम consistent है और यह 1.2 का नियम है। जो कुछ writer quote करता है वह सब YAML 1.2 के तहत मतलब बदलता; जिन शब्दों को यह bare छोड़ता है वे सिर्फ़ 1.1 के तहत मतलब बदलते हैं।

Multiline strings पढ़ने लायक़ बन जाती हैं

JSON string में literal newline नहीं हो सकता, इसलिए किसी JSON manifest में embed किया shell script एक विशाल लाइन होती है जिसमें breaks की जगह backslash-n होता है। ऐसे बदलाव की समीक्षा करना मुमकिन नहीं होता।

YAML writer उन values को block scalars के रूप में लिखता है — एक pipe character, फिर टेक्स्ट अपनी indented लाइनों पर, breaks अपनी जगह पर। बारह-लाइन का entrypoint script बारह लाइनों में बदल जाता है।

Objects के arrays वह list रूप बनते हैं जिसे सब पहचानते हैं

Objects का JSON array उस dash-prefixed list में बदल जाता है जिसमें हर Kubernetes और GitHub Actions उदाहरण लिखा है — hyphen, फिर पहली key उसी लाइन पर और बाक़ी उसके नीचे indented।

यह सुधार review के लिए है, correctness के लिए नहीं, और review ही फ़ाइल का मक़सद है। छह deployment steps देखता reviewer braces गिने बिना उनकी सीमाएँ देख सकता है।

अब जो comment लिख सकते हैं वही फ़ाइल का मक़सद है

JSON कोई comment नहीं रखता, जो RFC 8259 की grammar से निकलता है, किसी parser की चूक से नहीं। YAML इन्हें कहीं भी रख सकता है जहाँ लाइन hash से शुरू हो सके। किसी generated manifest को YAML में बदलना अक्सर syntax के बारे में नहीं होता।

आउटपुट में कोई comment नहीं, क्योंकि input के पास देने को कुछ नहीं था। इन्हें जोड़ना पहला सार्थक edit है, और सबसे उपयोगी वे हैं जो कभी field की व्याख्या नहीं होते — बल्कि यह बताते क्यों replica count तीन है।

YAML जो व्यक्त कर सकता है और यह रूपांतरण कभी नहीं देगा

YAML में anchors और aliases हैं, जो किसी एक block को एक बार परिभाषित करने और तीन जगह इस्तेमाल करने देते हैं, और एक फ़ाइल में तीन hyphen से अलग किए कई documents हो सकते हैं। इनमें से कोई भी JSON स्रोत से नहीं आ सकता।

तो बदली फ़ाइल सही और flat है — JSON में जो दोहराया गया वह YAML में भी दोहराया गया है। दोहराव को anchor से हटाना एक हाथ से किया गया edit है।

Key order बरक़रार रहता है, जो YAML से guaranteed नहीं है

Writer keys उसी क्रम में रखता है जिसमें वे आईं, इसलिए apiVersion, kind और metadata अपनी जगह रहते हैं, sorted नहीं होते। न JSON न YAML mapping order को अर्थपूर्ण मानते हैं, पर alphabetised keys वाला manifest पढ़ने में कठिन है।

यह जानना ज़रूरी है जब आउटपुट repository में पहले से मौजूद फ़ाइल के साथ तुलना करें। अगर दोनों सिर्फ़ order में अलग हैं, फ़र्क़ इस रूपांतरण से नहीं, जो JSON बनाया उससे आया।

भरोसा करने से पहले YAML लागू करना

सबसे सस्ती जाँच टूल की अपनी dry run है — kubectl apply with --dry-run=client, docker compose config। हर एक दस्तावेज़ parse करता है और वह आकार बताता है जो उसने पाया।

quoting समस्या पकड़ने वाली जाँच अलग है और जान-बूझकर करनी होती है — बदली फ़ाइल में बिना quote yes, no, on, off ढूँढिए और हर एक के लिए सोचिए कि क्या कोई YAML 1.1 reader इसे कभी देखेगा।

JSON के बारे में कुछ भी आपकी मशीन नहीं छोड़ता

रूपांतरण इसी टैब में चलता है। JSON ब्राउज़र के अपने parser से पढ़ी जाती है और YAML किसी on-demand loaded library से लिखी जाती है, इसलिए कोई request दस्तावेज़ कहीं नहीं ले जाता।

किसी cluster से निकाला manifest internal hostnames, registry paths और infrastructure की आकृति रखता है, और कई संगठन इसे किसी सार्वजनिक web converter में paste करना घटना मानते हैं। यहाँ paste करने या भेजने को कुछ नहीं है।

JSON को YAML में ऐसे बदलें

  1. अपनी JSON फ़ाइल इस पेज पर छोड़ें, या चुनने के लिए दबाएँ।
  2. लक्ष्य के रूप में YAML चुनें। कन्वर्ज़न आपके ब्राउज़र में होता है और फ़ाइल अपलोड नहीं होती।
  3. तैयार YAML फ़ाइल डाउनलोड कर लें।

JSON या YAML: क्या बदलता है

JSON और YAML की तुलना
JSONYAML
पूरा नामJavaScript Object NotationYAML Ain't Markup Language
फ़ाइल एक्सटेंशन.json.yaml, .yml
मीडिया टाइपapplication/jsonapplication/yaml
पहली बार प्रकाशित20012001
विनिर्देशRFC 8259YAML 1.2
लाइसेंसखुला मानकखुला मानक
आज की स्थितिमौजूदामौजूदा
ब्राउज़र में खुलता हैहर ब्राउज़रकोई ब्राउज़र नहीं
इसकी जगह विचारणीयXML, NDJSONTOML

क्या बचा रहता है

कुछ नहीं खोता। JSON और YAML — दोनों अपनी सामग्री बिना नुक़सान सँभालते हैं: यह कन्वर्ज़न पैकिंग बदलता है, गुणवत्ता नहीं, और आप इसे दोहरा सकते हैं बिना इस डर के कि नुक़सान जमा होता जाएगा।

नतीजा खोलना

YAML को कोई भी ब्राउज़र नहीं पढ़ता। इस लिहाज़ से दोनों में यही कम जगह चलने वाला है। भेजने से पहले देख लीजिए कि पाने वाला इसे लेता भी है या नहीं।

Visual Studio Code JSON और YAML — दोनों पढ़ लेता है, इसलिए आप नतीजे को असली फ़ाइल के बग़ल में रखकर देख सकते हैं, बिना दूसरा प्रोग्राम खोले।

कौन-सा फ़ॉर्मेट किस काम के लिए है

JSON 2001 में आया। यह RFC 8259 में तय किया गया है, और अगर फ़ाइल को उस औज़ार से ज़्यादा जीना है जिसने उसे लिखा, तो यह बात क़ीमती है।

YAML 2001 से चला आ रहा है, और YAML 1.2 में तय किया गया है। Visual Studio Code और yq इस फ़ॉर्मेट को पढ़ लेते है।

JSON से YAML: आम सवाल

क्या मेरी JSON फ़ाइल कहीं अपलोड होती है?

नहीं। यह कन्वर्ज़न पूरी तरह आपके ब्राउज़र में होता है, इसलिए फ़ाइल आपके डिवाइस से बाहर नहीं जाती। आप ख़ुद जाँच सकते हैं: डेवलपर टूल्स का नेटवर्क टैब खोलिए और कुछ बदल कर देखिए। आपको पेज ख़ुद दिखेगा और आँकड़ों तथा विज्ञापन के वे अनुरोध दिखेंगे जिनसे इस सेवा का ख़र्च निकलता है — और एक भी ऐसा अनुरोध नहीं जो आपकी फ़ाइल साथ ले जा रहा हो।

क्या JSON को YAML में बदलना मुफ़्त है?

हाँ। न खाता, न वॉटरमार्क, और न कोई रोज़ का कोटा जो ख़त्म हो: यह आपकी अपनी मशीन पर चलता है, इसलिए आप जितनी बार चाहें लौट सकते हैं। ब्राउज़र 100 MB तक की फ़ाइलें सँभालता है, एक बार में 100।

JSON को YAML में बदलने पर क्या गुणवत्ता जाती है?

नहीं। YAML वही सामग्री बिना कुछ फेंके सँभालता है: नतीजा गुणवत्ता में असली फ़ाइल जैसा ही होता है।

क्या YAML फ़ाइल ब्राउज़र में खुलती है?

YAML को कोई भी ब्राउज़र नहीं पढ़ता। इस लिहाज़ से दोनों में यही कम जगह चलने वाला है। भेजने से पहले देख लीजिए कि पाने वाला इसे लेता भी है या नहीं।

क्या JSON से YAML बिना नुक़सान का है?

कुछ नहीं खोता। JSON और YAML — दोनों अपनी सामग्री बिना नुक़सान सँभालते हैं: यह कन्वर्ज़न पैकिंग बदलता है, गुणवत्ता नहीं, और आप इसे दोहरा सकते हैं बिना इस डर के कि नुक़सान जमा होता जाएगा।

इन फ़ॉर्मेट के बारे में और