Konwerter INI na JSON

Pliki INI to płaski format konfiguracji typu klucz-wartość, który wciąż spotkasz w aplikacjach Windows, w samym php.ini PHP-a oraz w wielu runnerach CI. JSON to format, którego oczekuje większość nowoczesnych bibliotek. Ten konwerter przechodzi plik INI, respektując bloki [section], linie key = value i komentarze ze średnikiem, i zwraca równoważny JSON, w którym każda sekcja staje się obiektem.

Jak przekonwertować INI na JSON

  1. 1

    Wklej treść INI

    Sekcje w nawiasach kwadratowych, pary klucz=wartość poniżej.

  2. 2

    Sparsuj

    Komentarze („;” i „#”) oraz puste linie są usuwane; spacje wokół „=” są ignorowane.

  3. 3

    Zmapuj na JSON

    Każda sekcja staje się obiektem JSON; klucze najwyższego poziomu poza sekcjami trafiają do korzenia.

  4. 4

    Skopiuj JSON

    Wynik jest sformatowany z wcięciem dwóch spacji.

Przykład

Wejście:

; konfiguracja bazy danych
[database]
host = db.example.com
port = 5432
user = app

[cache]
driver = redis
ttl = 3600

Wyjście:

{
  "database": {
    "host": "db.example.com",
    "port": "5432",
    "user": "app"
  },
  "cache": {
    "driver": "redis",
    "ttl": "3600"
  }
}

Osobliwości INI, które konwerter obsługuje

Składnia INI Zachowanie
Komentarz ; Usunięty
Komentarz # Usunięty (niestandardowy, ale częsty)
Brak sekcji Klucze trafiają do obiektu korzenia
Powtórzone klucze Wygrywa ostatni
Forma tablicy key[] Staje się tablicą JSON (w stylu PHP)
Wartości w cudzysłowie Cudzysłowy usuwane; wewnętrzna treść zachowana

Czego nie robi

  • Wnioskowania typów. INI jest tekstowo typowany; 42 i “42” wyglądają identycznie. Wszystkie wartości wychodzą jako łańcuchy JSON, chyba że włączysz krok „spróbuj liczba/wartość logiczna”.
  • Sekcji zagnieżdżonych. Standardowy INI nie ma sekcji zagnieżdżonych. Blok [database.primary] zostaje pojedynczym kluczem, a nie zagnieżdżonym obiektem.
  • Wartości wielowierszowych (poza tym, na co sam INI pozwala).

Kiedy INI wciąż ma sens

Dla płaskiej konfiguracji edytowanej przez osoby nietechniczne INI trudno pokonać, jeden klucz na linię, bez klamr, bardzo wyrozumiały. JSON wygrywa, gdy narzędzia muszą konsumować dane i liczy się struktura zagnieżdżona.

Najczęściej zadawane pytania

Bo INI jest tekstowo typowany. “42” i “czterdzieści dwa” to oba poprawne wartości i konwerter nie odróżni ich bez wskazówek. Jeśli potrzebujesz liczbowego JSON-a, uruchom krok post-procesu albo włącz „automatyczne wnioskowanie typów”, jeśli narzędzie to obsługuje.

Specyfikacja INI nie zawiera sekcji zagnieżdżonych, [a.b] to pojedyncza sekcja, której nazwa po prostu zawiera kropkę. Zamiana tego na zagnieżdżony JSON to konwencja, a nie standard, więc konwerter trzyma sekcje płasko.

Tak. Wiele linii key[] = value w tej samej sekcji zwija się w tablicę JSON. Pojedyncze key[] i tak wychodzi jako tablica jednoelementowa, by zachować spójny kształt.

Nie. Parsowanie odbywa się w przeglądarce, a treść nigdy nie jest wysyłana na zewnątrz.

Powiązane narzędzia

Narzędzie jest dostępne w innych językach