Czym są te formaty danych?

Programy zapisują i wymieniają ustrukturyzowane dane, takie jak ustawienia, rekordy i listy, w formatach tekstowych, z których każdy zapisuje je na swój sposób. Konwerter przydaje się, gdy jeden program udostępnia dane w formacie, którego inny program nie odczytuje, albo gdy dany format łatwiej odczytać lub edytować na potrzeby konkretnego zadania.

Format Sposób zapisu danych Gdzie można go spotkać
JSON Obiekty w nawiasach klamrowych, listy w nawiasach kwadratowych, tekst w cudzysłowach API internetowe i ustawienia aplikacji
YAML Wiersze key: value z wcięciami, elementy listy zaczynające się od - Pliki Docker Compose, Kubernetes i potoków CI
XML Elementy w tagach, które mogą mieć atrybuty Dokumenty, kanały RSS i usługi internetowe SOAP
TOML Wiersze key = value pod nagłówkami [table] Pliki konfiguracyjne, takie jak Cargo.toml i pyproject.toml
TOON Wiersze z wcięciami, listy rekordów zapisane w wierszach pod ich polami Ustrukturyzowane dane wysyłane do modeli językowych AI
CSV Wiersz nagłówka, a następnie jeden wiersz na rekord, wartości oddzielone przecinkami Arkusze kalkulacyjne i eksporty baz danych
TSV Podobnie jak CSV, ale wartości są oddzielone tabulatorami Komórki skopiowane z arkusza kalkulacyjnego
MessagePack Dane binarne, przedstawione na karcie Tekst jako bajty szesnastkowe Kompaktowe komunikaty między programami
JSON5 JSON, który dopuszcza również komentarze, apostrofy i klucze bez cudzysłowów Ręcznie edytowane pliki konfiguracyjne
JSONL Jedna wartość JSON w każdym wierszu, znana również jako JSON Lines lub NDJSON Dzienniki i zbiory danych
INI Wiersze key = value pod nagłówkami [section] Pliki ustawień programów, takie jak php.ini
Properties Wiersze key = value z kluczami rozdzielanymi kropkami Aplikacje Java, takie jak pliki application.properties w Spring Boot

Opis narzędzia

To narzędzie konwertuje dane między tymi 12 formatami: JSON, YAML, XML, TOML, TOON, CSV, TSV, MessagePack, JSON5, JSONL, INI i Java properties. Wszystkie dostępne tutaj konwertery formatów danych działają tak samo — zarówno ogólny konwerter formatów danych, jak i konwertery dla pojedynczych par, na przykład JSON na YAML, CSV na JSON czy XML na JSON. Po otwarciu wybrane są formaty wskazane w nazwie narzędzia, a menu Źródło i Cel pozwalają wybrać dowolne inne.

Konwertery przyjmują dane jako tekst, który wklejasz lub wpisujesz, albo jako pliki, i zwracają tekst lub pliki. Wybierz sposób za pomocą kart Plik i Tekst u góry po stronie źródłowej i po stronie docelowej. Na obu stronach na początku wybrana jest karta Tekst.

  • Tekst na wejściu: wklej lub wpisz dane, a będą konwertowane na bieżąco podczas pisania.
  • Plik na wejściu: wybierz lub przeciągnij i upuść jeden plik albo kilka. Przycisk Przeglądaj pliki pokazuje tylko pliki w formacie źródłowym, ale upuszczone pliki mogą być w dowolnym z 12 formatów, a każdy z nich jest konwertowany z formatu wskazanego przez jego rozszerzenie, więc plik .yaml jest konwertowany jako YAML nawet w konwerterze JSON na XML. Upuszczony plik z innym rozszerzeniem, na przykład .txt, jest konwertowany z formatu źródłowego. Odczytywane są też pliki w UTF-16 lub w starszym kodowaniu, takim jak Windows-1252.
  • Tekst na wyjściu: wynik pojawia się w edytorze kodu z podświetlaniem składni i jest gotowy do skopiowania. Gdy konwertowanych jest kilka plików, menu Plik nad edytorem pozwala wybrać wyświetlany plik.
  • Plik na wyjściu: przekonwertowane pliki pojawiają się w siatce, każdy z własnym przyciskiem Pobierz, i zachowują swoje nazwy z nowym rozszerzeniem. Przycisk Pobierz wszystko zapisuje wszystkie przekonwertowane pliki w jednym pliku ZIP albo pojedynczy przekonwertowany plik w niezmienionej postaci. Wklejone dane dają jeden plik o nazwie converted, na przykład converted.yaml. Przekonwertowane pliki są tekstem UTF-8, z wyjątkiem plików MessagePack, które są binarne.

Przycisk zamiany odwraca kierunek konwersji: format docelowy staje się źródłowym, obie strony zamieniają się kartami, a wynik staje się nowymi danymi wejściowymi.

Jeśli dane wejściowe są nieprawidłowe w formacie źródłowym, komunikat o błędzie wyjaśnia, co jest nie tak, zwykle podając wiersz i kolumnę, w których występuje problem. W przypadku plików komunikat o błędzie wymienia pliki, których nie udało się przekonwertować, a karta Tekst po stronie docelowej podaje szczegóły dotyczące wyświetlanego w niej pliku.

Dane są konwertowane w przeglądarce i nigdy nie są przesyłane na serwer.

Przykład

Ten JSON:

{
  "users": [
    { "id": 1, "name": "Ann", "admin": true },
    { "id": 2, "name": "Bo", "admin": false }
  ]
}
JSON

zmienia się w taki YAML:

users:
  - id: 1
    name: Ann
    admin: true
  - id: 2
    name: Bo
    admin: false
YAML

w taki CSV, z jednym wierszem na użytkownika:

id,name,admin
1,Ann,true
2,Bo,false
CSV

oraz w taki TOON:

users[2]{id,name,admin}:
  1,Ann,true
  2,Bo,false

Jak poszczególne formaty odwzorowują dane

Nie wszystkie formaty mogą przechowywać te same rodzaje danych, dlatego niektóre konwersje podlegają następującym zasadom:

  • CSV i TSV przechowują tabelę. Pierwszy wiersz zawiera nazwy kolumn, a każdy kolejny wiersz staje się obiektem. Zagnieżdżone obiekty stają się kolumnami o nazwach odpowiadających ich ścieżkom, a listy są zapisywane w komórkach jako tekst JSON. Na przykład {"name": "Ann", "address": {"city": "Oslo"}, "tags": ["a", "b"]} zmienia się w kolumny name, address.city i tags. Po konwersji w drugą stronę te kolumny ponownie stają się zagnieżdżonymi obiektami i listami. Gdy dane są obiektem zawierającym jedną listę, na przykład {"users": [...]}, wiersze odpowiadają elementom tej listy, a lista list staje się wierszami bez nagłówka.
  • Wartości tekstowe: CSV, TSV, XML, INI i properties przechowują wyłącznie tekst, dlatego konwertery zamieniają true i false na wartości logiczne true i false, a liczby zapisane w prostym formacie, takie jak 42 lub 3.5, na liczby. Wartości takie jak 007, 1.50 czy 1e3 pozostają tekstem, dzięki czemu kody pocztowe i numery wersji zachowują dokładny zapis.
  • Atrybuty XML stają się kluczami zaczynającymi się od @, a tekst elementu zawierającego atrybuty staje się wartością #text: <price currency="USD">44.95</price> zmienia się w {"@currency": "USD", "#text": 44.95}. Powtarzające się elementy stają się listą. Podczas konwersji do XML klucze zaczynające się od @ ponownie stają się atrybutami. Obiekt z jednym kluczem, którego wartość nie jest listą, staje się elementem głównym. Pozostałe dane są umieszczane w elemencie <root>, a każdy element listy znajdującej się na najwyższym poziomie — w elemencie <item>. Znaki niedozwolone w nazwach XML, takie jak spacje, są zastępowane znakiem _.
  • TOML, INI i properties mogą przechowywać na najwyższym poziomie wyłącznie nazwane wartości, dlatego dane będące listą są zapisywane pod nazwą items, a pojedyncza wartość — pod nazwą value. TOML nie obsługuje wartości null, dlatego są one pomijane.
  • INI zapisuje zagnieżdżone obiekty jako sekcje, takie jak [server.ssl], listy wartości jako wiersze key[] = value, a listy obiektów jako sekcje nazwane według ich pozycji, takie jak [users.0].
  • Klucze w properties łączą zagnieżdżone nazwy kropkami, a elementy list numerują w nawiasach kwadratowych, na przykład app.hosts[0], zgodnie ze sposobem zapisu stosowanym przez Spring Boot. Po konwersji do YAML lub JSON takie klucze stają się zagnieżdżonymi obiektami i listami, więc plik application.properties zostaje przekształcony do układu pliku application.yml. Znaki spoza zestawu Latin-1 są zapisywane jako sekwencje ucieczki \u.
  • Wyniki YAML ujmują w cudzysłów tekst, który czytniki YAML 1.1 zinterpretowałyby inaczej, na przykład on, yes lub datę, dzięki czemu czytniki YAML 1.1 i YAML 1.2 otrzymują te same dane. Plik YAML zawierający kilka dokumentów rozdzielonych przez --- staje się ich listą, a klucze scalania << są rozwijane.
  • MessagePack jest formatem binarnym. W postaci tekstu narzędzia odczytują go i zapisują jako bajty szesnastkowe: {"a": 1} to 81 A1 61 01, a dane wejściowe mogą zawierać spacje, przecinki i prefiks 0x przed każdym bajtem. Pliki MessagePack wybierane lub zapisywane na karcie Plik zawierają bezpośrednio te bajty, więc przekonwertowany plik .msgpack jest binarny. Kilka komunikatów zapisanych jeden po drugim staje się listą.
  • Wyniki JSONL zawierają każdy element listy w osobnym wierszu.
  • Liczby całkowite zbyt duże, by można je było zapisać jako liczby JavaScript, takie jak identyfikatory 64-bitowe, zachowują wszystkie cyfry.
  • Daty i godziny TOML oraz znaczniki czasu MessagePack stają się tekstem, na przykład 1979-05-27T07:32:00Z.

Wskazówki

  • Aby przekonwertować komórki z arkusza kalkulacyjnego, skopiuj je i wklej jako TSV: aplikacje arkuszy kalkulacyjnych kopiują komórki jako tekst rozdzielony tabulatorami.
  • CSV i TSV sprawdzają się w przypadku danych będących listą podobnych rekordów. Dane o głębokim zagnieżdżeniu łatwiej odczytać w formacie YAML, TOML lub TOON.
  • Komentarze w plikach YAML, XML, TOML, JSON5, INI i properties nie są zachowywane, ponieważ konwertery przenoszą wyłącznie dane.