JSON से YAML

वास्तविक समय पूर्वावलोकन के साथ JSON को YAML फ़ॉर्मेट में कनवर्ट करें।

कोई डेटा आपके डिवाइस से बाहर नहीं जाता
इंडेंट:

कैसे उपयोग करें

  1. बाएँ क्षेत्र में अपना JSON डेटा पेस्ट या टाइप करें।
  2. अपनी पसंदीदा इंडेंटेशन (2 या 4 स्पेस) चुनें।
  3. YAML आउटपुट दाईं ओर वास्तविक समय में दिखाई देता है। कॉपी करने के लिए कॉपी, डाउनलोड करने के लिए डाउनलोड

अक्सर पूछे जाने वाले प्रश्न

क्या मेरा डेटा सुरक्षित है?

हाँ, रूपांतरण पूरी तरह आपके ब्राउज़र में होता है। कोई डेटा सर्वर पर नहीं भेजा जाता।

कौन से इंडेंटेशन विकल्प उपलब्ध हैं?

आप 2 या 4 स्पेस इंडेंटेशन चुन सकते हैं। डिफ़ॉल्ट 2 स्पेस है।

क्या मैं आउटपुट सीधे कॉपी कर सकता हूँ?

हाँ, क्लिपबोर्ड पर YAML कॉपी करने के लिए आउटपुट क्षेत्र के नीचे "कॉपी" बटन पर क्लिक करें।

यह कैसे काम करता है

  1. JSON पेस्ट करें: कोई भी मान्य JSON दर्ज करें, फ़्लैट की-मान जोड़ों से गहराई से नेस्टेड ऑब्जेक्ट और ऐरे तक।
  2. तत्काल रूपांतरण: टूल JSON को उचित इंडेंटेशन के साथ YAML में रूपांतरित करता है, कुंजियों से उद्धरण हटाता है।
  3. आउटपुट कॉन्फ़िगर करें: इंडेंट चौड़ाई (2 या 4 स्पेस) सेट करें और ऐरे के लिए ब्लॉक या फ़्लो शैली चुनें।
  4. YAML कॉपी करें: परिणाम कॉन्फ़िगरेशन फ़ाइलों, CI/CD पाइपलाइनों या Kubernetes मेनिफ़ेस्ट में पेस्ट करने के लिए तैयार है।

JSON को YAML में क्यों रूपांतरित करें?

YAML Kubernetes, Docker Compose, GitHub Actions, Ansible जैसे बुनियादी ढाँचा टूल के लिए पसंदीदा कॉन्फ़िगरेशन प्रारूप है।

प्रकार मानचित्रण

JSON से YAML conversion क्या है?

JSON से YAML conversion underlying data को संरक्षित रखते हुए key-value pairs के एक tree को एक serialization format से दूसरे में translate करता है. दोनों formats एक ही data आकार (strings, numbers, booleans, null, arrays, objects) का वर्णन करते हैं, लेकिन JSON braces और brackets का उपयोग करता है जबकि YAML indentation और dashes का. वही configuration "name: app, version: 1, ports: 80, 443" किसी में भी व्यक्त की जा सकती है, और converters अर्थ खोए बिना उनके बीच चलते हैं.

JSON, Douglas Crockford द्वारा 2001 के आसपास आविष्कृत और 2006 में RFC 4627 तथा 2013 में ECMA-404 के रूप में standardize किया गया, web APIs की lingua franca है. Clark Evans, Ingy doet Net, और Oren Ben-Kiki द्वारा YAML 1.0 (2001), 1.1 (2005) और 1.2 (2009) को JSON के superset के रूप में design किया गया था जो मानव पठनीयता के लिए optimized है, comments, multi-line strings, anchors और aliases के समर्थन के साथ. आधुनिक DevOps tooling (Kubernetes, Docker Compose, GitHub Actions, Ansible, Helm) ने YAML को डिफ़ॉल्ट बनाया क्योंकि configs मनुष्यों द्वारा लिखे और समीक्षा किए जाते हैं.

यह converter दोनों formats को साथ-साथ जोड़ता है. बाईं ओर JSON paste करें, JSON to YAML click करें, और दायाँ pane आपकी चुनी हुई indent गहराई (2 या 4 spaces) पर वैध YAML के साथ update होता है. Reverse button वही प्रक्रिया उल्टी दिशा में चलाता है. Conversion js-yaml library (Vitaly Puzrin, 2011) का उपयोग करता है जो jsDelivr से load होती है, जो YAML 1.2 spec को Kubernetes manifests, Helm charts, और OpenAPI specs को round-trip करने के लिए पर्याप्त सटीकता से लागू करती है.

Converter ke andar kya hai

Interface एक दो-pane grid layout का उपयोग करता है: JSON बाईं ओर, YAML दाईं ओर. 768 pixels से संकरी screens पर layout लंबवत रूप से stack होता है. Panes के ऊपर, एक indentation selector आपको प्रति स्तर 2 या 4 spaces चुनने देता है. सक्रिय choice highlighted होता है, और indentation conversion की दोनों दिशाओं पर लागू होता है.

हर pane के अपने action buttons होते हैं. JSON pane JSON to YAML (convert) और Clear प्रदान करता है. YAML pane YAML to JSON (reverse), Copy (clipboard), और Download .yaml (.yaml extension और UTF-8 encoding के साथ एक file के रूप में save करें) प्रदान करता है. Converter के नीचे error banner line number और एक छोटे संदेश के साथ parse errors को सतह पर लाता है, इसलिए आप tool छोड़े बिना अमान्य input ठीक कर सकते हैं.

Hood के नीचे, JSON से YAML conversion JSON.parse plus js-yaml के dump function का उपयोग करता है. YAML से JSON दिशा js-yaml के load function plus 2-space indent के साथ JSON.stringify का उपयोग करती है. दोनों दिशाएँ input के शुद्ध functions हैं, conversions के बीच कोई state नहीं ले जाई जाती, और page refresh करने से सब कुछ reset हो जाता है.

Itihaas aur prishthbhumi

Douglas Crockford JSON को specify करते हैं (2001)

Douglas Crockford ने अप्रैल 2001 में State Software में JSON syntax का दस्तावेज़ीकरण किया, यह महसूस करने के बाद कि JavaScript का object literal syntax एक language-स्वतंत्र data format के रूप में कार्य कर सकता है. Spec जानबूझकर न्यूनतम था: छह types, दो collections, कोई comments नहीं, कोई schema नहीं. RFC 4627 2006 में और ECMA-404 2013 में अनुसरण किए गए. यह न्यूनतावाद ठीक यही है जिसने JSON को web पर सर्वव्यापी बनाया.

YAML 1.0 publish kiya gaya (2001)

Clark Evans, Ingy doet Net, और Oren Ben-Kiki ने मई 2001 में YAML 1.0 release किया, JSON के समान वर्ष में. परिवर्णी का मूल अर्थ Yet Another Markup Language था लेकिन इसे YAML Ain't Markup Language में retconned किया गया ताकि यह स्पष्ट किया जा सके कि YAML configuration data को लक्ष्य करता है, document markup को नहीं. 1.0 spec महत्वाकांक्षी थी, anchors, aliases, multi-document streams, custom tags, और comments का समर्थन करती थी.

YAML 1.1 और Norway समस्या (2005)

YAML 1.1 (जनवरी 2005) ने spec को कसा लेकिन प्रसिद्ध boolean-coercion व्यवहार रखा जहाँ strings yes, no, on, off, y, n, true, false plus उनके capitalized variants, सब booleans बन जाते हैं. यह Norway समस्या है: unquoted ISO country code NO boolean false बन जाता है. Bug ने शुरुआती Kubernetes users को काटा जब तक कि YAML 1.2 (2009) ने वैकल्पिक boolean spellings हटा दीं.

YAML 1.2 JSON को subset घोषित करता है (2009)

YAML 1.2 (अक्टूबर 2009) ने स्पष्ट रूप से JSON को YAML का सख्त subset बनाया, इसलिए कोई भी वैध JSON document एक वैध YAML document भी है. यह एक बड़ी design जीत थी: jो tools YAML 1.2 संभालते थे वे मुफ़्त में JSON parse कर सकते थे, converters और validators के implementation को सरल बनाते थे. आज अधिकांश tooling में अभी भी उपयोग होने वाला version 1.2 या एक 1.1-संगत profile है.

Kubernetes YAML manifests ship करता है (2015)

Kubernetes 1.0, Google द्वारा जुलाई 2015 में release, ने YAML manifests का उपयोग करके cluster resources (Pods, Deployments, Services) को परिभाषित किया. चुनाव text editors और version control के अभ्यस्त ops teams के लिए पठनीयता से प्रेरित था. Helm (2016) ने ऊपर templating जोड़ी, GitHub Actions (2018) ने workflows के लिए YAML अपनाया, और Ansible playbooks (2012 से 2018) ने YAML को प्रमुख DevOps config भाषा के रूप में सीमेंट किया.

js-yaml वास्तविक JavaScript library बनती है (2011 से आगे)

Vitaly Puzrin ने 2011 में PyYAML के एक शुद्ध-JavaScript port के रूप में js-yaml प्रकाशित किया. बाद के versions (2014 में 2.0, 2015 में 3.0, 2021 में 4.0) ने YAML 1.2 spec को track किया, खतरनाक features से opt out करने के लिए schemas जोड़ीं, और साप्ताहिक 50 मिलियन से अधिक npm downloads तक पहुँचे. Library किसी भी browser-side YAML काम के लिए webpack, parcel, और esbuild द्वारा bundled है, और यही यह converter हुड के नीचे उपयोग करता है.

Praayogik workflows

Kubernetes manifests लिखना

जब आप kubectl run --dry-run=client -o json के माध्यम से एक Pod या Deployment उत्पन्न करते हैं, आपको JSON मिलता है. इसे यहाँ paste करें, JSON to YAML click करें, और आपके पास git में commit करने के लिए तैयार एक manifest है. रूपांतरण nested specs, environment variables, और resource limits को ठीक वैसे ही संरक्षित करता है जैसे Kubernetes उन्हें पढ़ेगा.

Docker Compose service परिभाषाएँ

एक team-mate आपको एक नई service के लिए एक JSON snippet भेजता है. इसे paste करें, convert करें, और YAML को अपने docker-compose.yml में drop करें. 2-space indent Compose डिफ़ॉल्ट है, इसलिए indent option को 2 पर छोड़ें.

GitHub Actions workflows

जब आप एक JSON-आधारित template generator से एक workflow scaffold करते हैं या JSON API response से एक चरण copy करते हैं, इसे यहाँ paste करें और convert करें. Output सीधे .github/workflows/*.yml में drop होता है. ध्यान दें कि GitHub Actions कुछ fields में JSON भी स्वीकार करता है, लेकिन YAML कैनोनिकल रूप है.

Ansible playbooks

Ansible inventories अक्सर एक CMDB या asset database से export किए गए JSON के रूप में जीवन शुरू करती हैं. Paste करें, YAML में convert करें, और आपके पास एक hosts file या playbook header है जो Ansible की अपेक्षित शैली में फिट होता है. Ansible community style guide से मेल खाने के लिए 2-space indent का उपयोग करें.

Helm chart values

एक vendor अपने Helm chart के लिए JSON sample configurations ship करता है. YAML में convert करें और values.yaml में drop करें. रूपांतरण nested keys (image.repository, image.tag, resources.limits.memory) का ठीक वैसे ही सम्मान करता है जैसे Helm उनकी अपेक्षा करता है.

OpenAPI 3 specs

Swagger Editor JSON और YAML दोनों के रूप में OpenAPI specs export करता है. जब एक tool JSON निकालता है लेकिन आपकी team version control में YAML का उपयोग करती है (या उल्टा), यह converter Node, Python, या yq चलाए बिना formats बदलने का सबसे तेज़ तरीका है.

Aam khataarey

Norway समस्या (booleans के रूप में yes, no, on, off)

YAML 1.1 में, strings yes, no, on, off, y, n, true, false (और उनके capitalized variants) सब booleans हैं. इसलिए unquoted ISO country code NO boolean false बन जाता है. js-yaml 4.x डिफ़ॉल्ट रूप से YAML 1.2 का उपयोग करता है जो केवल true और false को booleans के रूप में मानता है, लेकिन पुराने YAML parsers अभी भी ठोकर खा सकते हैं. यदि आप tooling versions मिलाते हैं तो अस्पष्ट strings को स्पष्ट रूप से quote करें.

Tabs वैध YAML indentation नहीं हैं

YAML indentation के लिए spaces का उपयोग करता है, tabs का नहीं. यदि आपका editor डिफ़ॉल्ट रूप से tabs डालता है, परिवर्तित YAML Kubernetes, Helm, या किसी कड़े YAML loader में parse करने में विफल होगा. अपने editor को .yaml और .yml files के लिए 2 या 4 spaces उपयोग करने के लिए configure करें, या commit करने से पहले एक linter (yamllint) चलाएँ.

Anchors और aliases JSON conversion से नहीं बचते

YAML values को पुन: उपयोग करने के लिए anchors (&name) और aliases (*name) का समर्थन करता है. जब आप YAML को JSON में convert करते हैं, anchors inline विस्तारित हो जाते हैं क्योंकि JSON में समकक्ष feature नहीं है. Reverse JSON से YAML conversion स्वचालित रूप से anchors को पुन: प्रस्तुत नहीं करेगा. यदि आपको anchors चाहिए, conversion के बाद उन्हें हाथ से लिखें.

Multi-line strings को स्पष्ट indicators की आवश्यकता होती है

Embedded newlines (Hello\nWorld) वाला एक JSON string literal block scalar (|) या folded block scalar (>) का उपयोग करके YAML में convert होता है. js-yaml सही रूप चुनता है, लेकिन यदि आप परिणाम को हाथ से edit करते हैं, याद रखें कि | newlines को संरक्षित करता है और > उन्हें spaces में folds करता है.

बड़ी संख्याएँ precision खोती हैं

JavaScript numbers 64-bit IEEE 754 floats हैं, इसलिए 2 की 53 power (लगभग 9 quadrillion) से आगे के integers JSON.parse द्वारा parse होने पर precision खोते हैं. YAML में रूपांतरण नुकसानदायक मान को संरक्षित करता है, मूल को नहीं. यदि आपके data में BigInt-शैली पहचानकर्ता हैं, convert करने से पहले उन्हें JSON में strings के रूप में encode करें.

Comments YAML से JSON में खो जाती हैं

YAML # comments का समर्थन करता है, JSON नहीं. जब आप comments वाले YAML को JSON में वापस convert करते हैं, comments हटा दिए जाते हैं क्योंकि JSON में उनके लिए कोई syntax नहीं है. यदि आप processing के लिए YAML को JSON के माध्यम से round-trip करते हैं, हर # line खोने की उम्मीद करें. yq या ruamel.yaml जैसे tools comments को संरक्षित कर सकते हैं, लेकिन spec-अनुपालन js-yaml उन्हें गिरा देता है.

Gopniyata aur data handling

सारा conversion आपके browser में page में bundled js-yaml library के माध्यम से चलता है. हम आपका JSON या YAML किसी server पर नहीं भेजते, inputs log नहीं करते, और आपके conversions के content पर analytics नहीं चलाते. Copy button Clipboard API का उपयोग करता है जिसे एक user gesture की आवश्यकता होती है, और Download .yaml button एक in-memory blob URL का उपयोग करता है, इसलिए file कभी किसी network के माध्यम से round-trip नहीं करती.

Page load होने के बाद (js-yaml CDN file सहित), tool offline काम करता है. आप network से disconnect कर सकते हैं और संवेदनशील configuration (API keys, database URLs, internal service names) convert कर सकते हैं बिना इसमें से कुछ भी आपके device से जाए. js-yaml file jsDelivr से एक Subresource Integrity hash के साथ serve होती है, इसलिए bundle को चुपचाप swap नहीं किया जा सकता.

यह converter कब उपयोग नहीं करना चाहिए

Megabytes data streaming

Converter पूरी input को memory में load करता है, उसे parse करता है, और एक ही बार में परिणाम निकालता है. Multi-megabyte JSON या YAML files के लिए, एक shell pipeline में yq या jq का उपयोग करें, या अपनी पसंदीदा भाषा में एक streaming parser. Browser 5 से 10 megabytes के ऊपर सही tool नहीं है.

JSON mein binary data

यदि आपके JSON में Base64-encoded binary blobs हैं जिनकी जाँच या संशोधन करना है, YAML में convert करने से वे unpack नहीं होंगे. YAML tagged binary (!!binary) का समर्थन करता है जिसे js-yaml संभालता है, लेकिन bytes Base64 में रहते हैं. वास्तविक byte-स्तर के काम के लिए एक समर्पित binary editor का उपयोग करें.

Schema सत्यापन

यह converter जाँचता है कि input वैध JSON या YAML है, लेकिन यह एक schema (JSON Schema, OpenAPI, Kubernetes CRD, Helm values) के विरुद्ध मान्य नहीं करता. यदि आपको जानना है कि एक Kubernetes manifest 1.28 cluster के लिए संरचनात्मक रूप से सही है, kubectl --dry-run=server या kubeval, kubeconform जैसा एक tool चलाएँ.

Schema-aware रिफ़ैक्टरिंग

यदि आपको सैकड़ों YAML files में एक field rename करना है, या एक API version upgrade करना है (apps/v1beta1 से apps/v1), sed, ast-grep, या स्पष्ट path queries के साथ yq का उपयोग करें. Converter केवल formats के बीच रूपांतरण करता है, यह semantic content edit नहीं करता.

Aur sawaal

क्या JSON YAML से अधिक सुरक्षित है?

Security के लिए, हाँ. PyYAML का yaml.load (5.1 से पहले) और समान अनुमेय parsers tagged Python objects के माध्यम से अविश्वसनीय YAML inputs से मनमाना code execute कर सकते थे. JSON में ऐसी कोई feature नहीं है, हर JSON parser design से सुरक्षित है. आधुनिक YAML parsers (PyYAML 5.1+, js-yaml 4.0 से) डिफ़ॉल्ट रूप से safe-load का उपयोग करते हैं, इसलिए अंतर संकीर्ण हुआ है, लेकिन JSON अविश्वसनीय input के लिए अभी भी सुरक्षित डिफ़ॉल्ट है.

YAML ने braces के बजाय indentation क्यों चुना?

YAML लेखक चाहते थे कि configs outlines की तरह पढ़े जाएँ, इसलिए उन्होंने Python की महत्वपूर्ण whitespace जैसी ही परंपरा का उपयोग किया. Braces और brackets वैध YAML (flow style) हैं, लेकिन indentation के साथ block style डिफ़ॉल्ट है क्योंकि यह plain text में edit करने वाले मनुष्यों के लिए अधिक स्वाभाविक रूप से स्कैन होता है. व्यापार-बंद यह है कि whitespace सार्थक बन जाता है, जो trailing spaces को auto-trim करने वाले editors को पकड़ता है.

क्या YAML हमेशा JSON का सख्त superset है?

YAML 1.2 (2009) से, हाँ. कोई भी वैध JSON document एक वैध YAML 1.2 document भी है. YAML 1.1 में कुछ edge cases थे (sexagesimal numbers, Norway समस्या) जहाँ संबंध ढीला था. आधुनिक js-yaml डिफ़ॉल्ट रूप से 1.2 का उपयोग करता है, इसलिए इस tool के लिए superset गुण लागू होता है.

Kubernetes YAML इतना verbose क्यों है?

Kubernetes manifests की एक निश्चित top-level आकार (apiVersion, kind, metadata, spec) होती है और spec में API के आंतरिक Go structs को दर्शाने वाले nested objects होते हैं. Verbosity एक object-oriented API को flat-text format में map करने का एक side effect है. Kustomize, Helm, और Pulumi जैसे tools verbosity कम करते हैं, लेकिन underlying YAML वही है जो kubectl वास्तव में cluster को भेजता है.

क्या मैं बिना data हानि के YAML के माध्यम से JSON को round-trip कर सकता हूँ?

अधिकांश JSON के लिए, हाँ. Strings, numbers, booleans, null, arrays, objects सब बच जाते हैं. Edge cases में बहुत बड़े integers (precision हानि), Unicode surrogate pairs (parser पर निर्भर), और key ordering (YAML reorder कर सकता है) शामिल हैं. यदि आपकी JSON keys को अपनी मूल order रखनी है, एक tool का उपयोग करें जो insertion order का सम्मान करता है (Python की OrderedDict, JavaScript में json-stable-stringify).

TOML और HCL के बारे में क्या?

TOML (Tom's Obvious Minimal Language, 2013 में Tom Preston-Werner द्वारा) Cargo (Rust), pyproject.toml (Python), और अन्य द्वारा उपयोग होता है. HCL (HashiCorp Configuration Language, 2014) Terraform द्वारा उपयोग होता है. दोनों configuration use case को target करते हैं लेकिन अलग syntax का उपयोग करते हैं. यह converter केवल JSON और YAML संभालता है. TOML या HCL के लिए, समर्पित converters या सही plugin के साथ yq का उपयोग करें.

संबंधित टूल

निःशुल्क JSON फॉर्मेटर और वैलिडेटर निःशुल्क JSON फॉर्मेटर और वैलिडेटर मुफ़्त XML से CSV कनवर्टर