JSON na Go to proces automatycznej konwersji danych w formacie JSON na definicje typów struct języka Go. JSON jest najpopularniejszym formatem wymiany danych w REST API, plikach konfiguracyjnych, kolejkach wiadomości i dziennikach, podczas gdy Go jest silnie typowanym językiem; podczas programowania dynamiczna struktura JSON często musi być mapowana na struct przed deserializacją z encoding/json. Ręczne pisanie struct, szczególnie zagnieżdżonych obiektów, łatwo prowadzi do pominiętych pól lub błędnych typów; to narzędzie ma na celu automatyzację powtarzalnej pracy.
Struct w Go to złożony typ danych, deklarowany jako `type Name struct { ... }`. Każde pole składa się z nazwy i typu; nazwy pól muszą zaczynać się od wielkiej litery, aby były dostępne z innych pakietów, tzw. „eksportowane identyfikatory”. Narzędzie automatycznie konwertuje nazwy pól JSON na eksportowane nazwy pól w PascalCase, np. `user_name` mapuje się na `UserName`, z oryginalnym kluczem zachowanym w tagu json.
Główna konwersja tego narzędzia jest wykonywana przez wbudowany w przeglądarkę Web Worker jsonFormat, który wywołuje renderer Go quicktype-core z opcjami `just-types` i `no-comments`. Cały proces nie zależy od usług backendowych: wprowadzony JSON jest parsowany lokalnie, typy są wnioskowane, kod Go jest generowany, a na koniec prezentowany w prawym edytorze.
Wnioskowanie typów jest zgodne z konwencjonalnym mapowaniem JSON na Go: ciągi mapowane są na `string`, wartości logiczne na `bool`, liczby całkowite na `int64`, liczby zmiennoprzecinkowe na `float64`, tablice na wycinki `[]T`, obiekty na niezależne struktury, `null` na `interface{}`. Zagnieżdżone obiekty są przetwarzane rekurencyjnie, utrzymując przejrzystą hierarchię.
W porównaniu do ręcznego pisania, kod wygenerowany przez narzędzie to „działająca pierwsza wersja robocza”. Deweloperzy zazwyczaj muszą tylko dostosować nazwę typu głównego, nazwę pakietu, precyzję typów pól (np. int64 na int) i czy używać typów wskaźnikowych, zanim umieszczą w rzeczywistych projektach Go. W połączeniu z kopiowaniem jednym kliknięciem i pobieraniem model.go powtarzalna praca na etapach integracji i modelowania jest znacznie zmniejszona.