Przejdź do treści

Konwersja formatu JSON do TOML — Numio

Konwertuje obiekt JSON na TOML. Zagnieżdżone obiekty stają się sekcjami [tabela], tablice obiektów stają się [[tablica tabel]], a klucze z wartościami null są usuwane, ponieważ TOML nie ma wartości null.

Przekształcanie konfiguracji JSON w składnię konfiguracji pyproject.toml, Cargo.toml, wrangler.toml lub Hugo.

JSON

Kiedy go używać

  • Przekształcanie konfiguracji JSON w składnię konfiguracji pyproject.toml, Cargo.toml, wrangler.toml lub Hugo.
  • Przenoszenie ustawień wygenerowanych przez skrypt jako JSON do pliku konfiguracyjnego opartego na TOML.

Jak używać

  1. Wklej obiekt JSON (korzeń musi być obiektem, a nie tablicą) do lewego edytora lub użyj przycisku ładowania pliku, aby otworzyć plik UTF-8.
  2. Sprawdź TOML po prawej: najpierw pojawiają się klucze skalarne, potem sekcje [table] i [[array]].
  3. Skopiuj wynik, a następnie porównaj go z udokumentowanymi kluczami narzędzia docelowego przed wymianą konfiguracji.

Obiekt JSON

{
  "title": "My App",
  "port": 8080,
  "debug": false,
  "owner": { "name": "Ada", "since": "2024-01-05T10:00:00Z" },
  "servers": [
    { "host": "a.example.com", "weight": 3 },
    { "host": "b.example.com", "weight": 1 }
  ],
  "ports": [80, 443]
}

TOML

title = "My App"
port = 8_080
debug = false
ports = [ 80, 443 ]

[owner]
name = "Ada"
since = "2024-01-05T10:00:00Z"

[[servers]]
host = "a.example.com"
weight = 3

[[servers]]
host = "b.example.com"
weight = 1

Szczegóły i ograniczenia

Liczby całkowite wynoszące 1000 lub więcej otrzymują separatory podkreślenia (8080 staje się 8_080). Jest to prawidłowe TOML i analizuje ten sam numer.

Ciągi daty pozostają w cudzysłowie; JSON nie ma typu daty, więc nie są generowane żadne wartości daty i godziny TOML.

Klucze z wartościami null są dyskretnie pomijane, a 1,0 w JSON jest zapisywane jako liczba całkowita 1.

Działa w przeglądarce z @iarna/toml. Lista, która łączy obiekty z innymi wartościami, jest odrzucana, ponieważ tablice tabel TOML nie mogą ich pomieścić. Podtabele są wcięte dwiema spacjami; TOML ignoruje to.

FAQ

Czy mogę przekonwertować tablicę JSON w katalogu głównym?

Nie. Dokument TOML musi być tabelą, dlatego strona wyjaśnia, że JSON jest tablicą, i sugeruje otoczenie jej obiektem, np. {"items": [...]}.

Co się dzieje z wartościami null?

Klucz został upuszczony. {"a": null} generuje puste dane wyjściowe. Użyj pustego ciągu lub celowo usuń klucz, jeśli cel tego oczekuje.

Dlaczego liczby zawierają podkreślenia?

Serializator formatuje duże liczby całkowite z separatorami _ cyfr, na co pozwala specyfikacja TOML. Każdy parser TOML odczytuje 8_080 jako 8080.

Specyfikacje i referencje