DevToolPal
PL

JSON na strukturę Go

Generuje struktury Go z tagami json z przykładowego JSON-a, z nazwanymi lub wbudowanymi strukturami zagnieżdżonymi i omitempty.

Działa lokalnie, nic nie jest wysyłane

Opcje

Obiekty zagnieżdżone

JSON

0 znaków · 0 B

Go

0 znaków · 0 B

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ć

  1. Wklej JSON do pola wejściowego, wgraj plik .json lub kliknij Przykład.
  2. Ustaw nazwę typu głównego i wybierz, jak zapisywać obiekty zagnieżdżone, które pola dostają omitempty i czy pola dopuszczające null używają wskaźników.
  3. Skopiuj kod Go lub pobierz go jako plik .go i 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.Time samodzielnie, 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.