Czy konwersja jest bezstratna?
Nie, i żadna konwersja YAML na JSON nie jest. Komentarze, anchor, klucze merge, tagi i styl blokowy nie mają odpowiednika w JSON, więc są rozwijane albo usuwane. Różnica polega na tym, że każda taka strata jest tu policzona i wskazana, zamiast zniknąć po cichu.
Czy wynik zamieni się z powrotem w ten sam plik?
JSON tak: konwersja JSON → YAML → JSON dała JSON identyczny co do bajtu na wszystkich trzech prawdziwych plikach, które testowaliśmy, łącznie z literałami liczb i kolejnością kluczy. YAML nie: komentarze znikają, anchor i klucze merge są rozwijane, a cudzysłowy się zmieniają. Wartości przetrwają tę podróż; plik w postaci, w jakiej go napisałeś, nie.
Dlaczego moje yes zamieniło się w tekst?
Bo to narzędzie czyta YAML 1.2, gdzie yes jest tekstem. PyYAML, Ruby i yaml.v2 z Go czytają YAML 1.1, gdzie to samo słowo znaczy true. To dokładnie te linie, które wypisuje lista rozbieżności, widzisz je tutaj, a nie w zepsutym wdrożeniu.
Czy zaokrągla moje liczby?
Nie. JSON powstaje z twojego tekstu źródłowego, a nie z liczby JavaScriptu, więc 9007199254740993 i 1.10 są wypisywane dokładnie tak, jak je wpisałeś. Kolejność kluczy też przetrwa, łącznie z kluczami wyglądającymi jak liczby (10, 2 i 1) które zwykły obiekt JavaScriptu po cichu ustawiłby jako 1, 2, 10.
Czy otworzy pliki CloudFormation albo Ansible?
Otwiera je bez błędu, !Ref i !GetAtt są przyjmowane, a ich wartości zachowane: ale sam tag zostaje usunięty, więc dostajesz dane, a nie szablon gotowy do wdrożenia.
Czy mój plik jest wysyłany?
Nie. Konwersja odbywa się w karcie twojej przeglądarki. Tutaj znaczy to więcej niż na większości stron: manifesty Kubernetes i workflow CI rutynowo zawierają wewnętrzne nazwy hostów, adresy rejestrów, nazwy sekretów, a czasem same sekrety.