§

మీరు మార్చాలనుకుంటున్న JSON లేదా YAML పేస్ట్ చేయండి.

మోడ్
ఇండెంట్
ఆప్షన్లు
§

ఔట్‌పుట్

yaml

హైదరాబాద్ DevOps మరియు ప్లాట్‌ఫామ్ ఇంజినీరింగ్ టీమ్‌లకు JSON మరియు YAML మధ్య హాపింగ్ రోజువారీ పని: AWS EKS మరియు Azure AKS లో Kubernetes మేనిఫెస్టులు YAML లో రచించబడతాయి కానీ Argo CD మరియు Helm అంతర్గతంగా JSON తో పని చేస్తాయి; GitHub Actions వర్క్‌ఫ్లో YAMLలు, OpenAPI 3 స్పెసిఫికేషన్లు, మరియు AWS CloudFormation టెంప్లేట్లు కోడ్ రివ్యూ సమయంలో రెండు ఫార్మాట్‌ల మధ్య వంగుతాయి; Telangana మరియు AP గవర్నమెంట్ Kubernetes-ఆధారిత డిప్లాయ్‌మెంట్‌లకు మారుతున్న బ్యాక్‌ఎండ్ సర్వీస్‌లు Helm చార్ట్ YAMLలను Ajv పైప్‌లైన్ వ్యాలిడేషన్ కోసం JSON కి మారుస్తాయి. ఈ ఇన్-బ్రౌజర్ కన్వర్టర్ Kubernetes సీక్రెట్‌లు మరియు సైన్ చేసిన కాన్ఫిగ్‌లు హోస్టెడ్ సర్వీస్‌కు చేరకుండా పని చేస్తుంది.

JSON ↔ YAML మార్పిడి అంటే ఏమిటి?

JSON (JavaScript Object Notation, RFC 8259) నిర్మాణాత్మక డేటా కోసం కఠినమైన, బ్రేస్-డెలిమిటెడ్ వచన ఫార్మాట్; YAML (YAML Ain't Markup Language, వెర్షన్ 1.2) అదే విలువ మోడల్ కోసం ఇండెంటేషన్, లైన్ బ్రేక్‌లు, మరియు మానవ-చదవగలిగే సింటాక్స్ ఉపయోగించే JSON యొక్క సూపర్‌సెట్. వాటి మధ్య మార్పిడి ఒక కీ మళ్ళీ టైప్ చేయకుండా మెషీన్-ఫ్రెండ్లీ రూపం (APIs కోసం JSON, స్కీమా వ్యాలిడేషన్, ప్రోగ్రామాటిక్ ట్రాన్స్‌ఫార్మ్‌లు) మరియు మానవ-ఫ్రెండ్లీ రూపం (కోడ్ రివ్యూ కోసం YAML, Kubernetes మేనిఫెస్టులు, GitHub Actions వర్క్‌ఫ్లోలు) మధ్య అదే కాన్ఫిగరేషన్ పివట్ చేయడానికి అనుమతిస్తుంది.

JSON ↔ YAML మార్పిడి ఎలా పనిచేస్తుంది?

ప్రతి మార్పిడి బండిల్ చేసిన js-yaml లైబ్రరీ (MIT, వెర్షన్ 4.1.0) ఉపయోగించి మీ బ్రౌజర్‌లో స్థానికంగా నడుస్తుంది. ఉన్నత-స్థాయి దశలు:

  1. మోడ్ సెలెక్టర్ (ఆటో-డిటెక్ట్ / JSON → YAML / YAML → JSON) ఏ పైప్‌లైన్ నడుస్తుందో నిర్ణయిస్తుంది. ఆటో-డిటెక్ట్ మోడ్‌లో ఇన్‌పుట్ యొక్క మొదటి నాన్-వైట్‌స్పేస్ అక్షరం దిశ ఎంచుకుంటుంది — { లేదా [ అంటే JSON; మరేదైనా YAML అంటుంది.
  2. JSON → YAML: JSON.parse ఇన్‌పుట్‌ను ధృవీకరిస్తుంది మరియు JavaScript విలువ ఉత్పత్తి చేస్తుంది; jsyaml.dump(value, { indent, lineWidth: -1, sortKeys: false }) YAML 1.2 రూపం వ్రాస్తుంది. మల్టీ-డాక్యుమెంట్ ఆన్‌తో, ఇన్‌పుట్ అరే ప్రతి ఎలిమెంట్‌ను డాక్యుమెంట్ వారీగా డంప్ చేసి --- సెపరేటర్లతో జాయిన్ చేస్తుంది.
  3. YAML → JSON: jsyaml.loadAll ఇన్‌పుట్‌లో ప్రతి డాక్యుమెంట్ (--- సెపరేటర్లు స్వయంచాలకంగా నిర్వహిస్తుంది) అరేలోకి పార్స్ చేస్తుంది; సింగిల్-డాక్యుమెంట్ ఇన్‌పుట్‌లు అన్‌ర్యాప్ చేయబడతాయి కాబట్టి JSON ఔట్‌పుట్ ఒక-ఎలిమెంట్ అరే కాదు, డాక్యుమెంట్ అది.
  4. ఇండెంట్ (2 లేదా 4 స్పేసులు) మరియు ప్రిటీ-ప్రింట్ కాన్ఫిగర్ చేయదగినవి. ప్రిటీ-ప్రింట్ ఆఫ్ వైట్‌స్పేస్ లేకుండా JSON.stringify(value) ద్వారా మినిఫైడ్ JSON ఎమిట్ చేస్తుంది.
  5. ఔట్‌పుట్ రీడ్-ఓన్లీ టెక్స్ట్‌ఏరియాకు వ్రాయబడుతుంది. YAML పార్స్ వైఫల్యాలపై, ఎర్రర్ మేసేజ్ js-yaml యొక్క e.mark ద్వారా రిపోర్ట్ చేయబడిన 1-ఇండెక్స్డ్ లైన్ మరియు కాలమ్ కలిగి ఉంటుంది కాబట్టి మీరు నేరుగా బగ్‌కు వెళ్ళవచ్చు.

ఈ టూల్‌తో JSON మరియు YAML ఎందుకు మార్చాలి?

  • గోప్యత: ప్రతి పార్స్, ట్రాన్స్‌ఫార్మ్, మరియు ఎమిట్ పాస్ మీ బ్రౌజర్‌లో జరుగుతుంది. డేటా — Kubernetes సీక్రెట్‌లు, సైన్ చేసిన JWTs, మరియు ప్రైవేట్ కాన్ఫిగ్‌లు సహా — మా సర్వర్‌లకు చేరదు.
  • మల్టీ-డాక్యుమెంట్ YAML: jsyaml.loadAll --- సెపరేటర్లు గుర్తిస్తుంది మరియు డాక్యుమెంట్‌ల అరే తిరిగి ఇస్తుంది, కన్వర్టర్ సింగిల్-డాక్ కేసులకు అన్‌ర్యాప్ చేస్తుంది లేదా మల్టీ-డాక్ కేసులకు JSON అరేగా సంరక్షిస్తుంది.
  • యాంకర్లు మరియు అలియాస్‌లు రిజల్వ్ చేయబడతాయి: YAML యొక్క &anchor / *alias మెకానిజమ్ js-yaml యొక్క డిఫాల్ట్ స్కీమా ద్వారా నిర్వహించబడుతుంది. ఒకసారి నిర్వచించి రెండుసార్లు సూచించిన విలువ అన్ని రిఫరెన్సులు సమాన విలువలు కలిగిన JSON ఆబ్జెక్ట్‌కు రౌండ్-ట్రిప్ అవుతుంది.
  • CDN లేదు, టెలిమెట్రీ లేదు: js-yaml.min.js లైబ్రరీ పేజీ మాదిరిగానే అదే ఆరిజిన్ నుండి షిప్ చేయబడుతుంది, కాబట్టి టూల్ ఆఫ్‌లైన్‌లో, కార్పోరేట్ ప్రాక్సీల వెనుక, మరియు ఎయిర్-గ్యాప్డ్ వాతావరణాల లోపల పని చేస్తుంది.

JSON ↔ YAML మార్పిడి యొక్క సాధారణ అప్లికేషన్లు ఏమిటి?

JSON మరియు YAML మధ్య పివటింగ్ DevOps, ప్లాట్‌ఫామ్ ఇంజినీరింగ్, మరియు API టూలింగ్ అంతటా కనిపిస్తుంది:

  • Kubernetes మేనిఫెస్టులు: YAML Deployment, ConfigMap, లేదా HelmRelease ని ఇన్-హౌస్ పాలసీ వ్యాలిడేటర్ (Joi, Ajv, OPA Rego) ప్రోగ్రామాటిక్‌గా లింట్ చేయగలిగేలా JSON కి మార్చడం, అప్పుడు క్లస్టర్ అప్లై కోసం తిరిగి YAML కి మార్చడం.
  • CI/CD వర్క్‌ఫ్లోలు: కోడ్-జెనరేటర్ మాట్రిక్స్ లేదా జాబ్ డిపెండెన్సీలు రీరైట్ చేయగలిగేలా GitHub Actions workflow.yml ని JSON ద్వారా రౌండ్-ట్రిప్ చేయడం, అప్పుడు PR కోసం క్లీన్-అప్ చేసిన YAML ఎమిట్ చేయడం.
  • OpenAPI స్పెక్‌లు: బ్యాక్‌ఎండ్ ఆటో-జెనరేటెడ్ డాక్స్ నుండి JSON openapi.json పేస్ట్ చేసి రెపోలో చెక్-ఇన్ చేయబడిన మానవ-సవరించిన రిఫరెన్స్ కోసం openapi.yaml కి మార్చడం.

JSON ↔ YAML రౌండ్-ట్రిప్ ఉదాహరణ ఎలా కనిపిస్తుంది?

{"apiVersion":"apps/v1","kind":"Deployment","metadata":{"name":"web"},"spec":{"replicas":3,"selector":{"matchLabels":{"app":"web"}}}} పేస్ట్ చేసి JSON → YAML మోడ్‌లో CONVERT నొక్కడం మొదటి లైన్‌లో apiVersion: apps/v1 తో ఎనిమిది లైన్ల ఇండెంటెడ్ YAML ఉత్పత్తి చేస్తుంది. ఆ YAML ని తిరిగి YAML → JSON మోడ్‌లో ప్రిటీ-ప్రింట్ ఆన్‌తో ఫీడ్ చేయడం స్థిరమైన JSON.stringify(value, null, 2) తర్వాత అసలు ఆబ్జెక్ట్‌ను బైట్-ఫర్-బైట్ తిరిగి ఇస్తుంది, కీ ఆర్డర్ సంరక్షించబడుతుంది ఎందుకంటే js-yaml డిఫాల్ట్ స్కీమా రెండు దిశలలోనూ ఇన్సర్షన్ ఆర్డర్‌ను గౌరవిస్తుంది.

ఈ JSON ↔ YAML కన్వర్టర్ పూర్తిగా నా బ్రౌజర్‌లో నడుస్తుందా?

అవును. ప్రతి పార్స్, ట్రాన్స్‌ఫార్మ్, మరియు ఎమిట్ పాస్ మీ బ్రౌజర్ ట్యాబ్‌లో JavaScript గా స్థానికంగా నడుస్తుంది. బండిల్ చేసిన js-yaml లైబ్రరీ పేజీ మాదిరిగానే అదే ఆరిజిన్ నుండి షిప్ చేయబడుతుంది — CDN లేదు, ఇన్‌పుట్‌పై fetch, XMLHttpRequest, navigator.sendBeacon ఏదీ లేదు. Kubernetes సీక్రెట్‌లు, JWT పేలోడ్‌లు, సైన్ చేసిన CloudFormation YAMLలు, మరియు ప్రైవేట్ కాన్ఫిగ్‌లు మీ డివైస్‌లో ఉంటాయి.

కన్వర్టర్ మల్టీ-డాక్యుమెంట్ YAML ని ఎలా నిర్వహిస్తుంది?

YAML కేవలం --- కలిగిన లైన్‌ల ద్వారా వేరు చేయబడిన ఒక స్ట్రీమ్‌లో బహుళ డాక్యుమెంట్‌లు సపోర్ట్ చేస్తుంది. YAML → JSON లో కన్వర్టర్ jsyaml.loadAll పిలుస్తుంది, ఇది ప్రతి డాక్యుమెంట్‌ను JavaScript విలువగా తిరిగి ఇస్తుంది. ఒక్క డాక్యుమెంట్ మాత్రమే కనుగొనబడితే JSON ఔట్‌పుట్ ఆ డాక్యుమెంట్ నేరుగా అవుతుంది; రెండు లేదా ఎక్కువ కనుగొనబడితే JSON ఔట్‌పుట్ అరే అవుతుంది. JSON → YAML లో, ఇన్‌పుట్ JSON అరే మరియు మల్టీ-డాక్యుమెంట్ టోగుల్ ఆన్ అయినప్పుడు, ప్రతి అరే ఎలిమెంట్ వాటి మధ్య --- సెపరేటర్లతో దాని స్వంత డాక్యుమెంట్‌గా ఎమిట్ చేయబడుతుంది — JSON రిసోర్స్‌ల అరే నుండి kubectl apply-ఫ్రెండ్లీ బండిల్ జెనరేట్ చేయడానికి ఉపయోగపడుతుంది.

YAML యాంకర్లు మరియు అలియాస్‌లు సపోర్ట్ చేయబడతాయా?

అవును — &anchor నిర్వచనాలు మరియు *alias రిఫరెన్సులు లోడ్ దశలో js-yaml డిఫాల్ట్ స్కీమా ద్వారా రిజల్వ్ చేయబడతాయి. defaults: &d\n retries: 3\n timeout: 30\njob_a:\n <<: *d\njob_b:\n <<: *d వంటి YAML ఇన్‌పుట్ job_a మరియు job_b రెండూ retries: 3, timeout: 30 కలిగిన JSON ఆబ్జెక్ట్‌కు పార్స్ అవుతుంది. మర్జ్ కీ << (YAML 1.1 ఎక్స్‌టెన్షన్ js-yaml ఇంకా గౌరవిస్తుంది) కూడా డిఫాల్ట్ స్కీమాలో సపోర్ట్ చేయబడుతుంది.

JSON కి మరియు తిరిగి మార్చేటప్పుడు YAML కామెంట్లు సంరక్షించబడతాయా?

లేదు — js-yaml పార్స్ దశలో కామెంట్లు తీసివేస్తుంది, కాబట్టి YAML → JSON → YAML రౌండ్-ట్రిప్ ప్రతి #-ప్రిఫిక్స్డ్ లైన్ పోగొట్టుకుంటుంది. ఇది లోడ్/డంప్ మోడల్ యొక్క తెలిసిన పరిమితి; కామెంట్ సంరక్షణ క్రిటికల్ అయితే js-yaml బదులు yaml npm ప్యాకేజ్ (ట్రివియా సంరక్షించడానికి రూపొందించిన CST + AST API తో షిప్ చేస్తుంది) వంటి కామెంట్-అవేర్ లైబ్రరీ ఉపయోగించండి. చాలా కాన్ఫిగ్-కన్వర్షన్ వర్క్‌ఫ్లోలకు ట్రేడ్-ఆఫ్ స్వీకార్యమైనది: రౌండ్-ట్రిప్ చేసిన YAML ప్రతి కీ, విలువ, యాంకర్, మరియు అలియాస్ ఉంచుతుంది, కేవలం మానవ-రచించిన కామెంట్లు లేకుండా.

కస్టమ్ YAML ట్యాగ్‌లకు ఏమి జరుగుతుంది?

కన్వర్టర్ js-yaml యొక్క DEFAULT_SCHEMA ఉపయోగిస్తుంది, ఇది !!str, !!int, !!float, !!bool, !!null, !!seq, !!map, !!binary, మరియు !!timestamp అర్థం చేసుకుంటుంది — YAML 1.2 కోర్ మరియు JSON స్కీమాలలో ప్రతి ట్యాగ్. కస్టమ్ లేదా అప్లికేషన్-స్పెసిఫిక్ ట్యాగ్‌లు (ఉదా. CloudFormation లో !Ref, Ansible లో !vault) గుర్తించబడవు మరియు సపోర్ట్ చేయని ట్యాగ్ ఉదహరించే స్పష్టమైన ఎర్రర్‌గా సర్ఫేస్ అవుతాయి. CloudFormation కోసం ప్రత్యేకంగా, ఈ కన్వర్టర్‌లో పేస్ట్ చేయడానికి ముందు కస్టమ్ ట్యాగ్‌లు విస్తరించడానికి aws cloudformation package + --output-template-file ఫ్లో ఉపయోగించండి.

ఈ JSON ↔ YAML కన్వర్టర్ అదే ఆరిజిన్ వద్ద బండిల్ చేసిన js-yaml@4.1.0 తో షిప్ చేస్తుంది, మల్టీ-డాక్యుమెంట్ స్ట్రీమ్‌లు మరియు యాంకర్లు/అలియాస్‌లు అవుట్-ఆఫ్-ది-బాక్స్‌గా సపోర్ట్ చేస్తుంది, మరియు మీరు సోర్స్ సరి చేయగలిగేలా లైన్ మరియు కాలమ్‌తో YAML పార్స్ ఎర్రర్లు రిపోర్ట్ చేస్తుంది. అప్‌లోడ్ లేదు, CDN లేదు, టెలిమెట్రీ లేదు — ప్రతి బైట్ మీ బ్రౌజర్‌లో ఉంటుంది.