§

நீங்கள் மாற்ற விரும்பும் JSON அல்லது YAML ஒட்டவும்.

பயன்முறை
உள்தள்ளல்
விருப்பங்கள்
§

வெளியீடு

yaml

தமிழக DevOps மற்றும் platform engineers JSON மற்றும் YAML இடையே அடிக்கடி மாற்றுகிறார்கள். Kubernetes manifests YAML ல் எழுதப்படுகின்றன, ஆனால் kubectl மற்றும் Helm உள்ளூரில் JSON ஐப் பயன்படுத்துகின்றன. GitHub Actions workflow YAMLs, OpenAPI 3 specifications, AWS CloudFormation templates மற்றும் dbt profiles.yml — அனைத்தும் code review போது இரண்டு வடிவங்களுக்கிடையே மாறுகின்றன. Helm chart YAMLs ஐ Ajv pipeline க்கு எதிராக schema validation க்காக JSON க்கு மாற்றவும் இந்த கருவி உதவுகிறது. உலாவியிலேயே இயங்குவதால் Kubernetes secrets, signed JWTs எதுவும் வெளியே போவதில்லை.

JSON ↔ YAML மாற்றம் என்றால் என்ன?

JSON (JavaScript Object Notation, RFC 8259) என்பது கட்டமைக்கப்பட்ட தரவுக்கான ஒரு கண்டிப்பான, brace-delimited உரை வடிவம்; YAML (YAML Ain't Markup Language, version 1.2) என்பது அதே மதிப்பு மாதிரிக்கு உள்தள்ளல், வரி இடைவெளிகள் மற்றும் மனித-படிக்கக்கூடிய தொடரியல்லைப் பயன்படுத்தும் JSON இன் superset. அவற்றுக்கிடையே மாற்றுவது ஒரே configuration ஐ machine-friendly வடிவம் (APIs, schema validation, programmatic transforms க்கு JSON) மற்றும் human-friendly வடிவம் (code review, Kubernetes manifests, GitHub Actions workflows க்கு YAML) இடையே ஒரு key மீண்டும் தட்டச்சு செய்யாமல் pivot செய்ய அனுமதிக்கிறது.

JSON ↔ YAML மாற்றம் எவ்வாறு வேலை செய்கிறது?

ஒவ்வொரு மாற்றமும் bundled js-yaml library (MIT, version 4.1.0) ஐப் பயன்படுத்தி உங்கள் உலாவியில் உள்ளூரில் இயங்குகிறது. உயர்மட்ட படிகள்:

  1. Mode selector (தானாக கண்டறி / JSON → YAML / YAML → JSON) எந்த pipeline இயங்கும் என்று தீர்மானிக்கிறது. தானாக கண்டறி mode ல் உள்ளீட்டின் முதல் non-whitespace எழுத்து திசையை தேர்ந்தெடுக்கிறது — { அல்லது [ JSON ஐ அர்த்தமாக்குகிறது; வேறு எதுவும் YAML ஐ அர்த்தமாக்குகிறது.
  2. JSON → YAML: JSON.parse உள்ளீட்டை validate செய்து JavaScript மதிப்பு உருவாக்குகிறது; jsyaml.dump(value, { indent, lineWidth: -1, sortKeys: false }) YAML 1.2 வடிவம் எழுதுகிறது. Multi-document இயக்கியிருந்தால், input array ஒவ்வொரு element ஒரு document ஆக dump செய்யப்பட்டு --- separators உடன் இணைக்கப்படுகிறது.
  3. YAML → JSON: jsyaml.loadAll உள்ளீட்டில் ஒவ்வொரு document ஐயும் (--- separators தானாக கையாள்கிறது) ஒரு array ஆக பாகுபடுத்துகிறது; single-document உள்ளீடுகள் unwrap செய்யப்படுகின்றன, எனவே JSON வெளியீடு document தானே, ஒரு-element array அல்ல.
  4. Indent (2 அல்லது 4 இடங்கள்) மற்றும் Pretty-print configurable. Pretty-print off ஆனால் whitespace இல்லாமல் JSON.stringify(value) மூலம் minified JSON emit செய்கிறது.
  5. வெளியீடு read-only textarea க்கு எழுதப்படுகிறது. YAML பாகுபடுத்தல் தோல்விகளில், error message js-yaml இன் e.mark தெரிவிக்கும் 1-indexed வரி மற்றும் நெடுவரிசையை உள்ளடக்குகிறது.

இந்த கருவியுடன் JSON மற்றும் YAML ஐ ஏன் மாற்ற வேண்டும்?

  • தனியுரிமை: ஒவ்வொரு பாகுபடுத்தல், transform மற்றும் emit பாஸும் உங்கள் உலாவியில் நடைபெறுகிறது. தரவு — Kubernetes secrets, signed JWTs மற்றும் proprietary configs உட்பட — எங்கள் சேவையகங்களை ஒருபோதும் அடைவதில்லை.
  • Multi-document YAML: jsyaml.loadAll --- separators ஐ அங்கீகரிக்கிறது மற்றும் documents array திருப்பித் தருகிறது, converter single-doc cases ஐ unwrap செய்கிறது அல்லது multi-doc cases க்கு JSON array ஆக பாதுகாக்கிறது.
  • Anchors மற்றும் aliases resolved: YAML இன் &anchor / *alias mechanism js-yaml இன் default schema கையாளுகிறது. ஒரு முறை வரையறுக்கப்பட்டு இரண்டு முறை referenced மதிப்பு அனைத்து references சம மதிப்புகளை கொண்ட JSON object ஆக round-trip செய்கிறது.
  • CDN இல்லை, telemetry இல்லை: js-yaml.min.js library பக்கத்தின் அதே origin இலிருந்து ship ஆகிறது, எனவே கருவி offline, corporate proxies பின்னால் மற்றும் air-gapped சூழல்களில் வேலை செய்கிறது.

JSON ↔ YAML மாற்றத்தின் பொதுவான பயன்பாடுகள் என்ன?

JSON மற்றும் YAML இடையே pivot செய்வது DevOps, platform engineering மற்றும் API tooling முழுவதும் தோன்றுகிறது:

  • Kubernetes manifests: ஒரு YAML Deployment, ConfigMap அல்லது HelmRelease ஐ JSON க்கு மாற்றுவது, இதனால் in-house policy validator (Joi, Ajv, OPA Rego) programmatically lint செய்யலாம், பிறகு cluster apply க்கு YAML க்கு திரும்புவது.
  • CI/CD workflows: code-generator matrix அல்லது job dependencies மீண்டும் எழுத JSON மூலம் GitHub Actions workflow.yml round-trip செய்து, பிறகு PR க்கு cleaned-up YAML emit செய்வது.
  • OpenAPI specs: backend இன் auto-generated docs இலிருந்து JSON openapi.json ஒட்டி, repo க்கு check in செய்யப்படும் human-edited reference க்காக openapi.yaml க்கு மாற்றுவது.

JSON ↔ YAML round-trip எடுத்துக்காட்டு எப்படி இருக்கும்?

{"apiVersion":"apps/v1","kind":"Deployment","metadata":{"name":"web"},"spec":{"replicas":3,"selector":{"matchLabels":{"app":"web"}}}} ஒட்டி JSON → YAML mode ல் CONVERT அழுத்துவது முதல் வரியில் apiVersion: apps/v1 உடன் எட்டு வரி indented YAML உருவாக்குகிறது. அந்த YAML ஐ YAML → JSON mode ல் Pretty-print இயக்கியிருந்தால் மீண்டும் சேர்ப்பது stable JSON.stringify(value, null, 2) பிறகு original object ஐ byte-for-byte திருப்பித் தருகிறது.

இந்த JSON ↔ YAML மாற்றி முழுவதும் என் உலாவியில் இயங்குகிறதா?

ஆம். ஒவ்வொரு பாகுபடுத்தல், transform மற்றும் emit பாஸும் உங்கள் உலாவி tab க்குள் JavaScript ஆக உள்ளூரில் இயங்குகிறது. Bundled js-yaml library பக்கத்தின் அதே origin இலிருந்து ship ஆகிறது — CDN இல்லை, fetch இல்லை, XMLHttpRequest இல்லை, உள்ளீட்டில் navigator.sendBeacon இல்லை. Kubernetes secrets, JWT payloads, signed CloudFormation YAMLs மற்றும் proprietary configs உங்கள் சாதனத்தில் இருக்கும்.

Converter multi-document YAML ஐ எவ்வாறு கையாளுகிறது?

YAML --- மட்டும் கொண்ட வரிகளால் பிரிக்கப்பட்ட ஒரு stream ல் பல documents ஆதரிக்கிறது. YAML → JSON ல் converter jsyaml.loadAll அழைக்கிறது, அது ஒவ்வொரு document ஐயும் JavaScript மதிப்பாக திருப்பித் தருகிறது. சரியாக ஒரு document கண்டறியப்பட்டால் JSON வெளியீடு அந்த document நேரடியாக; இரண்டு அல்லது அதிகமாக இருந்தால் JSON வெளியீடு ஒரு array. JSON → YAML ல், உள்ளீடு JSON array ஆக இருக்கும்போது மற்றும் Multi-document toggle இயக்கியிருக்கும்போது, ஒவ்வொரு array element உம் --- separators உடன் அதன் சொந்த document ஆக emit ஆகிறது.

YAML anchors மற்றும் aliases ஆதரிக்கப்படுகிறதா?

ஆம் — &anchor definitions மற்றும் *alias references load படி போது js-yaml இன் default schema ஆல் resolve செய்யப்படுகின்றன. 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 object ஆக பாகுபடுத்துகிறது.

JSON க்கும் மீண்டும் மாற்றும்போது YAML comments பாதுகாக்கப்படுகிறதா?

இல்லை — js-yaml parse படி போது comments strip செய்கிறது, எனவே YAML → JSON → YAML round-trip ஒவ்வொரு #-prefixed வரியையும் இழக்கும். இது load/dump மாதிரியின் ஒரு அறிவிக்கப்பட்ட குறைபாடு. பெரும்பாலான config-conversion workflows க்கு trade-off ஏற்றுக்கொள்ளக்கூடியது: round-tripped YAML ஒவ்வொரு key, மதிப்பு, anchor மற்றும் alias பாதுகாக்கிறது, human-authored comments மட்டுமே இல்லாமல்.

Custom YAML tags க்கு என்ன நடக்கும்?

Converter js-yaml இன் DEFAULT_SCHEMA பயன்படுத்துகிறது, இது !!str, !!int, !!float, !!bool, !!null, !!seq, !!map, !!binary மற்றும் !!timestamp புரிகிறது. Custom அல்லது application-specific tags (எ.கா. CloudFormation ல் !Ref, Ansible ல் !vault) அங்கீகரிக்கப்படவில்லை மற்றும் ஆதரிக்கப்படாத tag ஐ குறிப்பிடும் தெளிவான பிழையாக surface ஆகும். CloudFormation க்கு குறிப்பாக, இந்த converter ல் ஒட்டுவதற்கு முன்பு custom tags விரிவாக்க aws cloudformation package + --output-template-file flow பயன்படுத்தவும்.

இந்த JSON ↔ YAML மாற்றி அதே origin ல் bundle செய்யப்பட்ட js-yaml@4.1.0 உடன் ship ஆகிறது, multi-document streams மற்றும் anchors/aliases out of the box ஆதரிக்கிறது, மற்றும் YAML பாகுபடுத்தல் பிழைகளை line மற்றும் column உடன் தெரிவிக்கிறது. பதிவேற்றம் இல்லை, CDN இல்லை, telemetry இல்லை — ஒவ்வொரு byte உம் உங்கள் உலாவியில் இருக்கும்.