Co robi narzędzie
Konwerter JSON na Go odczytuje przykładowy JSON i pisze definicje struktur Go z tagami json, gotowe dla encoding/json. Wklej odpowiedź API, które wywołujesz, i otrzymaj typy, których od razu użyjesz z json.Unmarshal, bez ręcznego pisania każdego pola i tagu.
Konwerter sprawdza każdą wartość w przykładzie. Zagnieżdżone obiekty stają się osobnymi strukturami, wszystkie elementy tablicy są łączone w jeden typ elementu, a pola, których brakuje w niektórych elementach lub które czasem są null, są rozpoznawane jako opcjonalne. Wynik jest wyrównany tak, jak zrobiłby to gofmt.
Jak używać
- Wklej JSON do pola wejściowego, wgraj plik
.jsonlub kliknij Przykład. - Ustaw nazwę typu głównego i wybierz, jak zapisywać obiekty zagnieżdżone, które pola dostają
omitemptyi czy pola dopuszczające null używają wskaźników. - Skopiuj kod Go lub pobierz go jako plik
.goi dodaj własną liniępackage.
Nieprawidłowy JSON jest zgłaszany z wierszem i kolumną błędu.
Przykład
Ten JSON:
{ "id": 7, "user_name": "ada", "tags": ["admin"], "profile": { "avatar_url": "https://example.com/a.png" } }
zamienia się w takie struktury:
type Root struct {
ID int `json:"id"`
UserName string `json:"user_name"`
Tags []string `json:"tags"`
Profile Profile `json:"profile"`
}
type Profile struct {
AvatarURL string `json:"avatar_url"`
}
Wskazówki
- Jeden przykład pokazuje tylko to, co zawiera. Jeśli wartość może być liczbą lub napisem, dodaj oba przypadki albo umieść kilka przykładów w tablicy, aby zostały połączone.
- Znaczniki czasu przychodzą jako napisy. Zmień typ na
time.Timesamodzielnie, gdy format to RFC 3339. - Obiekty o dokładnie tych samych polach współdzielą jedną strukturę, więc wynik pozostaje krótki, gdy ten sam kształt pojawia się w kilku miejscach.
- Piszesz też w TypeScript? Generator JSON na TypeScript używa tego samego wnioskowania do tworzenia interfejsów.
FAQ
› Jak wybierane są nazwy pól?
Każdy klucz JSON zamienia się w eksportowaną nazwę Go w PascalCase, a popularne skróty są pisane wielkimi literami, jak oczekuje golint, więc user_id staje się UserID, a avatar_url AvatarURL. Oryginalny klucz zostaje w tagu json, dzięki czemu encoding/json dokładnie mapuje pola.
› Jakie typy Go są używane?
Napisy stają się string, liczby całkowite int (lub int64, gdy wartość nie mieści się w 32 bitach), liczby dziesiętne float64, a wartości logiczne bool. Tablice stają się slice'ami, puste obiekty map[string]any, a wartości tylko null lub mieszające kilka rodzajów stają się any.
› Czym różnią się struktury nazwane od wbudowanych?
Tryb nazwany zapisuje każdy zagnieżdżony obiekt jako osobny typ, na przykład Address lub Order, co ułatwia ponowne użycie i testy. Tryb wbudowany umieszcza anonimowe typy struct bezpośrednio w rodzicu i trzyma wszystko w jednej deklaracji, jak robi wiele szybkich konwerterów.
› Kiedy dodawane jest omitempty?
Domyślnie tylko do pól opcjonalnych, czyli tych, których brakuje w niektórych obiektach tablicy lub które czasem są null. Możesz też dodać je do wszystkich pól albo do żadnego. Włącz wskaźniki, aby odróżnić brakującą wartość lub null od wartości zerowej.
› Czy mój JSON jest wysyłany?
Nie. Struktury są generowane w przeglądarce i nic nie trafia na serwer.