Skip to content

Konwerter YAML na JSON

Wklej YAML, uzyskaj JSON natychmiast. Konwersja na żywo w przeglądarce. Obsługa manifestów K8s, OpenAPI i Helm values. 100% prywatnie, bez przesyłania.

Bez śledzenia Działa w przeglądarce Bezpłatne
Opcje · 2 spacje
Wcięcie
0 znaków
JSON Wynik
0 linii
Zweryfikowano pod kątem zgodności ze specyfikacją YAML 1.2, rozwijania kotwic/aliasów oraz poprawności obsługi wielu dokumentów — Go Tools Engineering Team · May 4, 2026

Czym jest JSON?

JSON (JavaScript Object Notation) to lekki, tekstowy format wymiany danych ustandaryzowany jako RFC 8259 i ECMA-404. Obsługuje sześć typów danych — ciągi znaków, liczby, wartości logiczne, null, tablice i obiekty — z rygorystyczną, minimalną składnią, którą praktycznie każdy język programowania, API i narzędziowy łańcuch może parsować natywnie. Choć YAML jest preferowanym formatem dla plików konfiguracyjnych pisanych przez człowieka (manifesty Kubernetes, GitHub Actions, Ansible playbook, Helm values), JSON jest uniwersalnym formatem czytelnym maszynowo dla API, skryptów automatyzacji i programowego przetwarzania danych.

Konwersja YAML do JSON jest więc jednym z najczęstszych zadań w DevOps i programowaniu backendowym — masz plik konfiguracyjny YAML, ale potrzebujesz JSON do wysłania do REST API, zapytania przez jq lub przetworzenia narzędziami JavaScript.

Narzędzie ma cztery ważne cechy wyróżniające na tle typowych konwerterów online:

**1. Obsługa wielodokumentowego YAML.** YAML obsługuje wiele dokumentów w jednym strumieniu rozdzielonych --- (znacznikiem początku dokumentu). Wiele rzeczywistych plików YAML — w tym niektóre manifesty Kubernetes i Ansible playbook — zawiera wiele dokumentów. Narzędzie używa parseAllDocuments z biblioteki eemeli/yaml z opcjami { version: '1.2', merge: true } i zwraca pierwszy dokument jako JSON, wyraźnie informując, który dokument został wzięty. Jeśli potrzebujesz wszystkich dokumentów, podziel na --- i konwertuj każdy osobno.

**2. Rozwijanie kotwic i aliasów.** Kotwice YAML (&name) i aliasy (*name) umożliwiają ponowne użycie bloków danych — to potężna funkcja YAML bez odpowiednika w JSON. Narzędzie w pełni rozwija wszystkie kotwice i aliasy (łącznie z kluczami scalającymi: <<: *anchor), dzięki czemu wynikowy JSON zawiera pełne, samodzielne dane bez żadnych referencji. Jest to zawsze prawidłowa transformacja, bo JSON nie ma składni referencji. Rozwijanie jest obsługiwane bezpiecznie przez bibliotekę eemeli/yaml, która zawiera ochronę przed cyklicznymi referencjami. Narzędzie do konwersji w odwrotnym kierunku znajdziesz pod adresem Konwerter JSON na YAML.

**3. Utrata komentarzy — transparentna informacja.** YAML obsługuje komentarze #, często używane w manifestach Kubernetes, Helm values i Ansible playbook do dokumentowania intencji. JSON nie ma składni komentarzy, więc komentarze są trwale usuwane podczas konwersji. Nie jest to błąd — to fundamentalna różnica formatów. Narzędzie wyraźnie to komunikuje, byś wiedział, czego się spodziewać. Jeśli chcesz zachować adnotacje, zakoduj je jako pola JSON (klucze _comment lub dedykowany obiekt metadata) lub zachowaj YAML jako źródło autorytatywne. Więcej informacji w naszym artykule o problemie Norway w YAML i różnicach JSON-YAML.

**4. 100% prywatność w przeglądarce.** Dane YAML — często zawierające sekrety Kubernetes, dane uwierzytelniające baz danych, Helm values z hasłami i wewnętrzne konfiguracje usług — nigdy nie opuszczają przeglądarki. Żadne dane nie są wysyłane na serwer. Można to zweryfikować w zakładce Sieć przeglądarki. Po konwersji do JSON możesz zwalidować i sformatować wynik przy użyciu naszego formatowania JSON przed dalszym użyciem.

Bogactwo YAML (komentarze, kotwice, obsługa wielu dokumentów, skalary blokowe) sprawia, że doskonale nadaje się do plików konfiguracyjnych pisanych przez człowieka, gdzie czytelność i dokumentacja mają znaczenie. Rygorystyczność i uniwersalność JSON czynią go lepszym wyborem, gdy głównym konsumentem jest maszyna. Ten konwerter łączy oba światy: zachowaj konfigurację w YAML dla łatwości utrzymania przez człowieka, konwertuj do JSON gdy potrzebujesz maszynowo czytelnej wymiany danych.

// Convert YAML to JSON in Node.js using the eemeli/yaml library
import { parseAllDocuments } from 'yaml';

const yamlString = `apiVersion: apps/v1
kind: Deployment`;

// parseAllDocuments handles multi-document YAML (--- separator)
// version: '1.2' ensures yes/no are strings, not booleans
// merge: true expands anchor/alias merge keys (<<: *anchor)
const docs = parseAllDocuments(yamlString, { version: '1.2', merge: true });

// Take the first document (skip additional --- blocks)
const json = JSON.stringify(docs[0].toJSON(), null, 2);

console.log(json);
// {
//   "apiVersion": "apps/v1",
//   "kind": "Deployment"
// }

Kluczowe funkcje

Konwersja na żywo

Wynik JSON aktualizuje się natychmiast podczas wpisywania lub wklejania YAML — bez potrzeby klikania przycisku Konwertuj. Duże dane wejściowe (>200 KB) automatycznie przełączają się na tryb ręczny, aby przeglądarka pozostała responsywna.

Wcięcie 2 lub 4 spacje

Przełączaj między wcięciem 2- i 4-spacjowym dla wynikowego JSON. 2 spacje to standard dla większości narzędzi i API; 4 spacje odpowiadają niektórym przewodnikom stylu i domyślnym ustawieniom edytorów.

Obsługa wielu dokumentów

Obsługuje strumienie YAML z wieloma dokumentami rozdzielonymi ---. Pierwszy dokument jest konwertowany do JSON i zwracany. Przydatne dla plików Kubernetes z wieloma zasobami i Ansible playbook.

Rozwijanie kotwic i aliasów

W pełni rozwija kotwice YAML (&name) i aliasy (*name), łącznie z kluczami scalającymi (<<: *anchor). Wynikowy JSON zawiera pełne, rozwinięte dane bez żadnych referencji — prawidłowe zachowanie, gdyż JSON nie ma odpowiednika.

100% prywatność w przeglądarce

Cała konwersja odbywa się lokalnie w przeglądarce przy użyciu JavaScript. Dane YAML — w tym sekrety, dane uwierzytelniające i konfiguracje produkcyjne — nigdy nie są wysyłane na żaden serwer, nigdy nie są rejestrowane ani przechowywane.

Obsługa K8s, Compose, Helm i OpenAPI

Zoptymalizowane dla rzeczywistych zastosowań DevOps: manifesty Kubernetes, stosy Docker Compose, Helm chart values, przepływy pracy GitHub Actions, specyfikacje OpenAPI i Ansible playbook — z przykładami dla każdego przypadku.

Przykłady

Manifest Kubernetes

apiVersion: apps/v1
kind: Deployment
metadata:
  name: my-app
  namespace: production
  labels:
    app: my-app
    version: 1.0.0
spec:
  replicas: 3
  selector:
    matchLabels:
      app: my-app
  template:
    metadata:
      labels:
        app: my-app
    spec:
      containers:
        - name: my-app
          image: my-app:1.0.0
          ports:
            - containerPort: 8080
          resources:
            requests:
              memory: 64Mi
              cpu: 250m
            limits:
              memory: 128Mi
              cpu: 500m

Konwersja manifestu Kubernetes Deployment z YAML do JSON — przydatna do zapytań przez jq, wysyłania do API Kubernetes lub użycia w potokach Terraform i CI/CD

Docker Compose

version: '3.9'
services:
  web:
    image: nginx:1.25-alpine
    ports:
      - '80:80'
      - '443:443'
    environment:
      NGINX_HOST: example.com
      NGINX_PORT: '80'
    depends_on:
      - db
    restart: unless-stopped
  db:
    image: postgres:16-alpine
    environment:
      POSTGRES_DB: mydb
      POSTGRES_USER: admin
      POSTGRES_PASSWORD: secret
    volumes:
      - pgdata:/var/lib/postgresql/data
volumes:
  pgdata: {}

Konwersja YAML Docker Compose do JSON na potrzeby programowego przetwarzania, użycia w skryptach automatyzacji lub obróbki narzędziami JavaScript

Przepływ pracy GitHub Actions

name: CI
on:
  push:
    branches:
      - main
  pull_request:
    branches:
      - main
jobs:
  build:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
      - name: Set up Node.js
        uses: actions/setup-node@v4
        with:
          node-version: '20'
          cache: pnpm
      - name: Install dependencies
        run: pnpm install --frozen-lockfile
      - name: Run tests
        run: pnpm test

Parsowanie przepływu pracy GitHub Actions z YAML do JSON w celu zapytania o konkretne pola, walidacji struktury lub integracji z API przyjmującymi JSON

Specyfikacja OpenAPI

openapi: 3.0.3
info:
  title: User API
  version: 1.0.0
  description: Manage application users
paths:
  /users:
    get:
      summary: List users
      operationId: listUsers
      parameters:
        - name: limit
          in: query
          schema:
            type: integer
            default: 20
      responses:
        '200':
          description: Success
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/User'
  /users/{id}:
    get:
      summary: Get user
      operationId: getUser
      parameters:
        - name: id
          in: path
          required: true
          schema:
            type: string
      responses:
        '200':
          description: Success
components:
  schemas:
    User:
      type: object
      properties:
        id:
          type: string
        name:
          type: string
        email:
          type: string
          format: email

Konwersja specyfikacji OpenAPI 3.0 z YAML do JSON do użytku z generatorami kodu klienta, narzędziami do testowania API lub programowym sprawdzaniem schematu

Helm values.yaml

replicaCount: 3
image:
  repository: my-app
  tag: 1.0.0
  pullPolicy: IfNotPresent
service:
  type: ClusterIP
  port: 80
ingress:
  enabled: true
  className: nginx
  hosts:
    - host: my-app.example.com
      paths:
        - path: /
          pathType: Prefix
resources:
  requests:
    memory: 64Mi
    cpu: 250m
  limits:
    memory: 128Mi
    cpu: 500m
autoscaling:
  enabled: false
  minReplicas: 1
  maxReplicas: 10
  targetCPUUtilizationPercentage: 80

Konwersja pliku values.yaml Helm chart do JSON w celu analizy, generowania raportów lub użycia w narzędziach oczekujących konfiguracji JSON

Ansible Playbook

- name: Configure web servers
  hosts: webservers
  become: true
  vars:
    http_port: 80
    max_clients: 200
  tasks:
    - name: Ensure nginx is installed
      ansible.builtin.package:
        name: nginx
        state: present
    - name: Start nginx service
      ansible.builtin.service:
        name: nginx
        state: started
        enabled: true
    - name: Copy nginx config
      ansible.builtin.template:
        src: nginx.conf.j2
        dest: /etc/nginx/nginx.conf
        owner: root
        group: root
        mode: '0644'
      notify:
        - Restart nginx
  handlers:
    - name: Restart nginx
      ansible.builtin.service:
        name: nginx
        state: restarted

Parsowanie Ansible playbook z YAML do JSON w celu inspekcji struktury zadań, audytu konfiguracji lub integracji z potokami raportowania

Jak używać

  1. 1

    Wklej dane YAML

    Wprowadź lub wklej dane YAML do pola wejściowego powyżej. Możesz też kliknąć «Wczytaj przykład», aby wypróbować próbkę, np. Kubernetes Deployment, plik Docker Compose lub Helm values.yaml.

  2. 2

    Zobacz wynik JSON na żywo

    JSON pojawia się natychmiast w panelu wyjściowym. Dostosuj Opcje (wcięcie 2 lub 4 spacje), aby spełnić wymagania docelowego narzędzia.

  3. 3

    Kopiuj lub pobierz

    Kliknij Kopiuj, aby przenieść JSON do schowka, lub Pobierz, aby zapisać go jako plik .json gotowy do użycia z jq, wywołań API lub dowolnych narzędzi downstream.

Typowe problemy z YAML

Wcięcia tabulatorem

Specyfikacja YAML zabrania znaków tabulacji do wcięć — dozwolone są tylko spacje. Jeśli YAML był napisany lub skopiowany z edytora używającego tabulatorów, parser zgłosi błąd. Zastąp wszystkie wcięcia tabulatorem spacjami (2 lub 4 spacje na poziom).

✗ Niepoprawne
services:
	web:
		image: nginx:1.25-alpine
✓ Poprawne
services:
  web:
    image: nginx:1.25-alpine

Niespójne wcięcia

YAML używa spójnych wcięć do definiowania zagnieżdżenia. Mieszanie różnych liczb spacji w tym samym bloku (np. 2 spacje na jednym poziomie i 3 na innym) powoduje błędy parsowania. Każdy poziom musi być wcięty o tę samą liczbę spacji w całym dokumencie.

✗ Niepoprawne
metadata:
  name: my-app
   namespace: production
✓ Poprawne
metadata:
  name: my-app
  namespace: production

Znaki specjalne bez cudzysłowów

Znaki takie jak :, #, &, *, {, }, [, ], |, >, ! i @ mają specjalne znaczenie w YAML. Użycie ich bez cudzysłowów w wartościach może powodować błędy parsowania lub nieoczekiwane zachowanie. Ujmuj wartości zawierające te znaki w cudzysłowy pojedyncze lub podwójne.

✗ Niepoprawne
url: http://example.com:8080/api
tag: #latest
✓ Poprawne
url: 'http://example.com:8080/api'
tag: '#latest'

Cykliczne kotwice

YAML technicznie pozwala na kotwice odwołujące się do siebie (cykliczne referencje), choć w praktyce zdarza się to rzadko. Cykliczna kotwica powoduje, że parser wchodzi w nieskończoną pętlę rozwijania. Biblioteka eemeli/yaml wykrywa i zgłasza błąd dla cyklicznych kotwic zamiast się zawieszać.

✗ Niepoprawne
# Circular anchor (rare but possible)
base: &base
  parent: *base
✓ Poprawne
# Use explicit fields instead of circular references
base:
  parent: null

Zamieszanie z wieloma dokumentami

Pliki YAML z wieloma separatorami --- zawierają wiele dokumentów. Narzędzie zwraca tylko pierwszy dokument jako JSON. Jeśli oczekujesz danych z późniejszego dokumentu (po drugim lub trzecim ---), nie pojawią się one w wynikowym pliku. Podziel YAML na --- i konwertuj każdą sekcję osobno, jeśli potrzebujesz wszystkich dokumentów.

✗ Niepoprawne
# Only the first document is converted
apiVersion: v1
kind: ConfigMap
---
apiVersion: v1
kind: Secret
✓ Poprawne
# Convert each document separately
apiVersion: v1
kind: ConfigMap

Utrata komentarzy

YAML obsługuje komentarze #, ale JSON nie. Wszystkie komentarze YAML są trwale usuwane podczas konwersji — to fundamentalna różnica formatów, a nie ograniczenie narzędzia. Jeśli chcesz zachować adnotacje w JSON, zakoduj je jako dedykowane pole, np. klucz _comment lub obiekt metadata.

✗ Niepoprawne
# This comment will be lost
replicas: 3 # scale this up for production
✓ Poprawne
replicas: 3
_comment: scale this up for production

Typowe zastosowania

Analiza manifestów Kubernetes
Konwersja manifestów YAML Kubernetes do JSON w celu zapytań przez jq, wysyłania do REST API Kubernetes, przetwarzania w źródłach danych Terraform lub przekazywania do potoków CI/CD oczekujących JSON.
Docker Compose do narzędzi JavaScript
Parsowanie YAML Docker Compose do JSON w celu wyodrębnienia definicji usług, nazw obrazów, przyporządkowań portów i zmiennych środowiskowych do użycia w skryptach automatyzacji, grafach zależności lub narzędziach Node.js.
Integracja API GitHub Actions
Konwersja YAML przepływów pracy GitHub Actions do JSON w celu programowej walidacji struktury, wyodrębnienia definicji zadań i kroków lub integracji z API CI/CD przyjmującymi specyfikacje przepływów pracy w JSON.
OpenAPI do generowania kodu klienta
Wiele generatorów kodu (openapi-generator, swagger-codegen, oazapfts) przyjmuje specyfikacje OpenAPI w obu formatach. Konwertuj specyfikację YAML do JSON, gdy narzędzie wymaga konkretnie JSON lub gdy chcesz ją sprawdzić walidatorami JSON Schema.
Analiza Helm values
Konwersja pliku values.yaml Helm chart do JSON w celu generowania raportów, porównywania wartości między środowiskami, przekazywania do narzędzi egzekwowania polityk lub przetwarzania przez automatyzację oczekującą konfiguracji JSON.
Migracja konfiguracji do narzędzi opartych na JSON
Migracja konfiguracji aplikacji z YAML (typowego w narzędziach infrastrukturalnych) do JSON do użytku w środowiskach JavaScript, REST API, AWS AppConfig, Azure App Configuration lub dowolnym systemie przechowującym konfiguracje jako JSON.

Szczegóły techniczne

Specyfikacja YAML 1.2 przez parseAllDocuments z merge:true
YAML jest parsowany przy użyciu biblioteki eemeli/yaml (v2.8+, bezpieczna pod kątem CVE) przez parseAllDocuments z opcjami { version: '1.2', merge: true }. Schemat YAML 1.2 zapewnia, że ciągi gołe takie jak yes i no są traktowane jako ciągi znaków (nie wartości logiczne), zgodnie z aktualną specyfikacją YAML. Opcja merge: true w pełni rozwija klucze scalające kotwic/aliasów (<<: *anchor), dzięki czemu wynikowy JSON zawiera pełne, rozwinięte dane. Wielodokumentowy YAML (rozdzielony ---) zwraca pierwszy dokument.
Rozwijanie kotwic i aliasów przez bibliotekę
Biblioteka eemeli/yaml obsługuje rozwijanie kotwic (&name) i aliasów (*name) bezpiecznie, łącznie z wykrywaniem cyklicznych referencji. Wszystkie aliasowane bloki danych — łącznie z rozwinięciami kluczy scalających — są w pełni wbudowane w wynikowym JSON. Jest to prawidłowa transformacja, bo JSON nie ma koncepcji referencji ani kotwicy. Bezpieczne rozwijanie przez bibliotekę zapobiega nieskończonym pętlom z nieprawidłowo zbudowanego YAML.
W przeglądarce — bez przesyłania, bez serwera
Całe przetwarzanie odbywa się wyłącznie w silniku JavaScript przeglądarki. Żadne dane nie są przesyłane przez sieć w żadnym momencie. Dane wejściowe większe niż 200 KB automatycznie przełączają się z trybu na żywo na tryb ręczny (wymagający jawnego kliknięcia przycisku Konwertuj), aby utrzymać responsywność przeglądarki i zapobiec blokowaniu głównego wątku podczas intensywnej serializacji.

Dobre praktyki

Używaj składni zgodnej z YAML 1.2 dla czystej konwersji
Pisz YAML używając konwencji YAML 1.2 — jawnie ujmuj wartości ciągów yes, no, on, off, y i n w cudzysłowy (np. enabled: 'yes'), by uniknąć niejednoznaczności. Narzędzie parsuje ze schematem YAML 1.2 (więc są to ciągi znaków), ale starsze narzędzia w łańcuchu mogą używać YAML 1.1 (gdzie stają się wartościami logicznymi). Jawne cytowanie w źródłowym YAML jest najsłuszniejszą praktyką dla wszystkich parserów.
Ujmuj duże liczby w cudzysłowy w YAML, aby zachować precyzję
JavaScript nie może precyzyjnie reprezentować liczb całkowitych większych niż 2^53 - 1 (9007199254740991). Pola Kubernetes, jak resourceVersion i uid, są int64 po stronie serwera i mogą przekraczać ten limit. W źródłowym YAML ujmuj te wartości w cudzysłowy (resourceVersion: '9007199254740993'), aby parser traktował je jako ciągi znaków zachowane dokładnie w wynikowym JSON.
Waliduj wynikowy JSON przed użyciem w API
Po konwersji YAML do JSON zwaliduj wynik przed wysłaniem do API, przechowywaniem lub programowym przetwarzaniem. Użyj naszego formatowania JSON, aby potwierdzić poprawność struktury. Jest to szczególnie ważne dla wywołań API Kubernetes, specyfikacji OpenAPI i wszelkich ładunków walidowanych przez JSON Schema, gdzie błąd struktury powoduje mylącą odmowę na poziomie API, a nie na etapie konwersji.
Oddzielaj wielodokumentowy YAML przed konwersją
Jeśli plik YAML zawiera wiele dokumentów rozdzielonych --- i potrzebujesz wszystkich jako JSON, najpierw podziel plik na --- i konwertuj każdy dokument osobno. Narzędzie bierze tylko pierwszy dokument. Proste podejście: podziel na '\n---\n' w edytorze lub przy użyciu awk, a następnie wklejaj każdą sekcję osobno.
Używaj jq do przetwarzania JSON downstream
Gdy masz już JSON z YAML, jq jest najszybszym sposobem zapytania i transformacji go z wiersza poleceń. Połącz narzędzie z jq: konwertuj YAML online, wklej JSON, a następnie użyj jq '.spec.replicas' lub jq '.services | keys', aby wyodrębnić dokładnie to, czego potrzebujesz. Dla przetwarzania wsadowego wielu plików użyj bezpośrednio yq CLI z flagą -o json.

Najczęściej zadawane pytania

Jak przekonwertować YAML na JSON online?
Wklej YAML do pola wejściowego powyżej. Narzędzie konwertuje go do JSON natychmiast w przeglądarce — bez klikania przycisku. W panelu Opcje można dostosować wcięcia wynikowego JSON (2 lub 4 spacje). Po pojawieniu się JSON w obszarze wyjściowym kliknij Kopiuj, aby przenieść go do schowka, lub Pobierz, aby zapisać jako plik .json. Wszystko działa lokalnie — dane nigdy nie opuszczają urządzenia.
Jak narzędzie obsługuje wielodokumentowy YAML (separator ---)?
YAML obsługuje wiele dokumentów w jednym strumieniu, oddzielonych --- (znacznikiem początku dokumentu). Gdy wkleisz wielodokumentowy ciąg YAML, narzędzie używa parseAllDocuments z biblioteki eemeli/yaml i zwraca pierwszy dokument jako JSON. Dodatkowe dokumenty poza pierwszym są cicho pomijane. Jeśli chcesz przetworzyć wszystkie dokumenty, podziel YAML na fragmencie --- i konwertuj każdą sekcję osobno.
Jak obsługiwane są kotwice i aliasy YAML (&anchor i *alias)?
Kotwice YAML (&name) definiują blok wielokrotnego użytku, a aliasy (*name) do niego się odwołują. Narzędzie w pełni rozwija wszystkie kotwice i aliasy podczas parsowania, więc wynikowy JSON zawiera pełne, rozwinięte dane. Na przykład jeśli kotwica YAML definiuje zestaw limitów zasobów i wiele usług odwołuje się do niej kluczami scalającymi (<<: *anchor), JSON zawiera każde pole jawnie wbudowane dla każdej usługi. Jest to prawidłowe zachowanie dla JSON, który nie ma koncepcji referencji. Biblioteka eemeli/yaml obsługuje rozwijanie kotwic/aliasów bezpiecznie, łącznie z wykrywaniem cyklicznych referencji.
Czy komentarze YAML są zachowywane w wynikowym JSON?
Nie. JSON nie obsługuje komentarzy w żadnej formie — ani #, ani //, ani /* */. Przy konwersji YAML do JSON wszystkie komentarze są trwale usuwane. Jest to fundamentalna różnica formatów, a nie ograniczenie narzędzia. Jeśli potrzebujesz zachować adnotacje, zakoduj je jako dedykowane pole JSON (np. klucz _comment) przed konwersją, lub zachowaj źródłowy YAML jako wersję autorytatywną z komentarzami.
Jak używać narzędzia z manifestem Kubernetes?
Wklej manifest YAML Kubernetes (z pliku .yaml, wynikowego kubectl get -o yaml lub szablonu Helm) do pola wejściowego. Wynikowy JSON można następnie zapytać przez jq, wysłać bezpośrednio do REST API Kubernetes, użyć w źródłach danych Terraform lub przetworzyć dowolnym narzędziem oczekującym JSON. Typowym przepływem pracy jest konwersja manifestów YAML do JSON w celu wyodrębnienia konkretnych pól — np. jq '.spec.replicas' na wynikowym JSON do weryfikacji liczby replik w różnych Deploymentach. Przykład K8s Deployment powyżej pokazuje kompletny manifest, który można załadować i zmodyfikować.
Jak narzędzie pomaga przy plikach Docker Compose?
Pliki Docker Compose są z konwencji w YAML. Konwersja do JSON pozwala przetwarzać definicje usług narzędziami JavaScript, skryptami jq lub dowolnym systemem czytającym JSON. Typowe zastosowania to wyodrębnienie wszystkich nazw obrazów w celu zbudowania listy zależności, generowanie raportów z pliku compose lub przekazywanie konfiguracji Compose do narzędzi orkiestracji CI/CD przyjmujących JSON. Wklej compose.yaml do pola wejściowego, a wynikowy JSON jest od razu gotowy do dalszego przetwarzania.
Jaka jest różnica między YAML 1.1 a YAML 1.2 i którego używa narzędzie?
YAML 1.1 (starsza specyfikacja, nadal używana przez PyYAML, Ansible, Ruby Psych i wiele narzędzi Kubernetes) traktuje ciągi takie jak yes, no, on, off, y i n jako wartości logiczne true/false. To spowodowało słynny problem Norway, gdzie kod kraju ISO 'NO' był parsowany jako false. YAML 1.2 (aktualna specyfikacja, wydana w 2009 roku) naprawił to: wszystkie ciągi gołe są ciągami znaków, a tylko true/false są wartościami logicznymi. Narzędzie używa schematu YAML 1.2 do parsowania, co oznacza, że yes i no w wejściowym YAML są zachowywane jako wartości ciągów 'yes' i 'no' w wynikowym JSON — nie jako logiczne true i false. To jest prawidłowe, nowoczesne zachowanie. Jeśli YAML był oryginalnie napisany dla parsera YAML 1.1 i opierał się na yes/no jako wartościach logicznych, wynikowy JSON będzie traktować je jako ciągi znaków.
Dlaczego YAML zabrania wcięć tabulatorem?
Specyfikacja YAML wyraźnie zabrania znaków tabulacji (\t) do wcięć — dozwolone są tylko spacje. Jest to celowa decyzja projektowa, by unikać niejednoznaczności wynikającej z niespójnej szerokości tabulacji w różnych edytorach. Jeśli YAML używa tabulatorów do wcięć (co zdarza się przy kopiowaniu z edytorów automatycznie zamieniających spacje na tabulatory), parser YAML zgłosi błąd parsowania. Rozwiązaniem jest zastąpienie wszystkich wcięć tabulatorem spacjami. Większość edytorów kodu ma ustawienie zamieniające tabulatory na spacje (np. «Expand Tabs» w Vim, «Insert Spaces» w VS Code). Jeśli po wklejeniu YAML pojawia się błąd parsowania wspominający «tab» lub «indentation», prawie zawsze to jest przyczyna.
Czy duże liczby mogą tracić precyzję przy konwersji YAML do JSON?
Tak. Jest to podstawowe ograniczenie JavaScript dotyczące wszystkich narzędzi opartych na przeglądarce. 64-bitowa liczba zmiennoprzecinkowa IEEE 754 JavaScript może precyzyjnie reprezentować liczby całkowite tylko do 2^53 - 1 (9007199254740991). Liczby YAML większe niż ta wartość — takie jak pola int64 Kubernetes, jak resourceVersion — będą cicho zaokrąglane, gdy parser YAML przekaże je do typu liczbowego JavaScript. Bezpiecznym obejściem jest ujęcie dużych liczb w cudzysłowy w źródłowym pliku YAML (resourceVersion: '9007199254740993'), aby parser traktował je jako ciągi znaków, zachowane dokładnie w JSON jako wartości ciągów.
Jak przekonwertować YAML na JSON w wierszu poleceń?
Najpopularniejszym podejściem jest użycie yq (wersja Mike'a Faraha) i jq. Zainstaluj yq: brew install yq na macOS lub pobierz z github.com/mikefarah/yq/releases dla Linux. Następnie uruchom: yq -o json input.yaml, aby przekonwertować plik YAML do JSON, lub cat input.yaml | yq -o json - do użycia ze standardowym wejściem. Dla sformatowanego wyniku: yq -o json input.yaml | jq . — przekazuje JSON przez jq dla spójnego formatowania. Polecenie jednoliniowe Pythona: python3 -c "import sys, json, yaml; print(json.dumps(yaml.safe_load(sys.stdin), indent=2))" < input.yaml. Dla wielodokumentowego YAML z yq: yq -o json '.[0]' input.yaml, aby wyodrębnić tylko pierwszy dokument jako JSON.
Czy dane YAML są wysyłane na serwer podczas korzystania z narzędzia?
Nie. Cała konwersja odbywa się wyłącznie w przeglądarce przy użyciu JavaScript. Dane YAML nigdy nie są przesyłane przez sieć, nie są przechowywane na żadnym serwerze ani rejestrowane czy analizowane. Narzędzie jest bezpieczne do użytku z sekretami Kubernetes, danymi uwierzytelniającymi baz danych, wewnętrznymi Helm values, kluczami API w plikach konfiguracyjnych i dowolnymi innymi wrażliwymi konfiguracjami infrastruktury. Można to zweryfikować, otwierając zakładkę Sieć w przeglądarce — wklejenie YAML nie wyzwoli żadnych żądań sieciowych.
Czy jest limit rozmiaru dla danych wejściowych YAML?
Nie ma twardego limitu rozmiaru, ale duże dane wejściowe (powyżej 200 KB) automatycznie przełączają się z trybu na żywo na tryb ręczny. W trybie ręcznym pojawia się przycisk Konwertuj i konwersja uruchamia się tylko po jego kliknięciu — zapobiega to blokowaniu głównego wątku przeglądarki przy każdym naciśnięciu klawisza. W przypadku bardzo dużych plików YAML (wielomegabajtowych) warto rozważyć narzędzia wiersza poleceń, takie jak yq, dla lepszej wydajności. Narzędzie sprawnie obsługuje typowe rzeczywiste ładunki, takie jak pełne eksporty przestrzeni nazw Kubernetes, duże specyfikacje OpenAPI i wielousługowe pliki Helm chart values.

Powiązane narzędzia

Zobacz wszystkie narzędzia →