YAML vs JSON: co wybrać i dlaczego

YAML vs JSON

YAML vs JSON: różnice, pułapki oraz .yaml vs .yml | We.Inc

YAML i JSON obok siebie: składnia, komentarze, typy, tekst wielowierszowy i pułapka yes/no. Sprawdź, jak odczytywana jest wartość bez cudzysłowów, i raz na zawsze rozstrzygnij .yaml vs .yml.

JSON to ścisły format danych dla programów: nawiasy klamrowe, kwadratowe, teksty w podwójnych cudzysłowach i brak komentarzy. YAML wyraża te same dane wcięciami, pozwala na komentarze i tekst wielowierszowy, a wersja 1.2 została zaprojektowana jako nadzbiór JSON. Wybierz JSON dla API i danych generowanych maszynowo, YAML dla plików edytowanych ręcznie.

Porównanie YAML i JSON cecha po cesze

Oba formaty opisują te same rzeczy: mapy, listy, teksty, liczby, wartości logiczne i null. Prawdziwe różnice dotyczą tego, kto czyta plik i jak wyrozumiały jest parser. Wypróbuj poniżej sprawdzarkę wartości, aby zobaczyć, jaki typ dostaje wartość bez cudzysłowów, a potem przeczytaj przykłady obok siebie i pułapki, na które trafiają osoby przechodzące między formatami.

Najczęściej zadawane pytania

Czy każdy plik JSON jest poprawnym YAML?

YAML 1.2 napisano tak, aby był ścisłym nadzbiorem JSON, więc w praktyce dokument JSON wczytuje się w parserze YAML 1.2. Istnieją przypadki brzegowe, takie jak zduplikowane klucze, które parsery JSON często tolerują, a YAML zabrania.

Używać .yaml czy .yml?

Używaj .yaml. RFC 9512, który rejestruje typ mediów application/yaml, nazywa .yaml preferowanym rozszerzeniem i zauważa, że .yml jest nadal używane. Oba działają w narzędziach takich jak GitHub Actions, więc chodzi o spójność w obrębie jednego projektu.

Dlaczego moja wartość w YAML stała się true lub false?

YAML 1.1 traktował słowa takie jak yes, no, on, off, y i n jako wartości logiczne. Schemat core YAML 1.2 akceptuje tylko true i false w trzech wariantach wielkości liter, ale starsze parsery są nadal powszechne. Ujęcie wartości w cudzysłów usuwa wątpliwości.

Czy JSON może mieć komentarze?

Nie. RFC 8259 wymienia tokeny, które może zawierać JSON, i komentarzy wśród nich nie ma. Niektóre narzędzia akceptują luźniejszy JSON z komentarzami, ale ścisły parser odrzuci taki plik.

Który parsuje się szybciej?

Gramatyka JSON jest znacznie mniejsza, a przeglądarki mają dla niego wbudowany parser, więc zwykle jest to szybszy i bezpieczniejszy wybór dla danych przesyłanych przez sieć. Parsery YAML muszą stosować znacznie więcej reguł, od wcięć po niejawne typowanie.

Kiedy lepszy jest JSON

Kiedy lepszy jest YAML

Jeden rekord zapisany na dwa sposoby

Te same ustawienia strony w obu formatach. YAML pomija cudzysłowy i nawiasy klamrowe oraz dodaje komentarz; JSON wypisuje każdy tekst i każdy poziom zagnieżdżenia.

Wcięcie dwiema spacjami, komentarz, lista i numer wersji w cudzysłowie, aby pozostał tekstem.

Komentarz nie jest możliwy, a każdy klucz i tekst ma podwójne cudzysłowy.

Wartości, które zmieniają typ, gdy zapomnisz o cudzysłowach

Jaki typ dostaje wartość YAML bez cudzysłowów i bezpieczna wersja

Jak zostanie odczytana ta wartość bez cudzysłowów?

Wpisz wartość tak, jak wyglądałaby po dwukropku w pliku YAML, bez cudzysłowów. Sprawdzarka stosuje reguły schematu core YAML 1.2, listę wartości logicznych YAML 1.1 i gramatykę JSON.

Wartość bez cudzysłowów

Schemat core YAML 1.2

Parsery YAML 1.1

JSON, zapisany bez zmian

Ta sama wartość w JSON

wartość logiczna {v} (YAML 1.1 odczytuje to słowo jako wartość logiczną)

Brak pułapki z wartością logiczną w stylu yes/no dla tej wartości

Poprawna wartość JSON

Niepoprawny JSON, chyba że w cudzysłowie

JSON nie ma sposobu zapisania tej liczby

Wypróbuj

Zacznij za darmo · Bez karty kredytowej

Powiązane: Poradniki

Produkt

Dla kogo

Funkcje

Zasoby

Firma

Mapa strony