JSON na strukturę Go
Wklej przykładowy JSON i otrzymaj definicje struktur Go, które czysto go parsują za pomocą encoding/json. Pola są eksportowane (CamelCase), oznaczone oryginalnymi kluczami JSON, zamieniane na wskaźniki, gdy wartość może być null, a obiekty zagnieżdżone otrzymują własne nazwane deklaracje struktur.
Jak przekonwertować JSON na strukturę Go
-
1
Wklej JSON
Jedna próbka wystarczy. Więcej próbek poprawia wnioskowanie o polach nullowalnych.
-
2
Wybierz nazewnictwo
Dla pól eksportowanych konwencją Go jest PascalCase. Wybierz styl skrótów (`URL` vs `Url`, `ID` vs `Id`).
-
3
Wybierz strategię dla pól opcjonalnych
Użyj wskaźników dla pól nullowalnych (najbardziej idiomatyczne) lub tagów `omitempty`.
-
4
Skopiuj struktury
Jedna struktura główna wraz z zagnieżdżonymi. Wklej ją do pliku `.go` i uruchom `go build`.
Przykładowy wynik
Dla:
{ "first_name": "Alice", "age": 30, "email": null, "tags": ["admin"] }
Wynik:
type User struct {
FirstName string `json:"first_name"`
Age int `json:"age"`
Email *string `json:"email"`
Tags []string `json:"tags"`
}
Mapowanie typów
| Wartość JSON | Typ Go |
|---|---|
| ciąg znaków | string |
| liczba całkowita | int lub int64 |
| liczba (dziesiętna) | float64 |
| wartość logiczna | bool |
| null (gdy obok jest element niepusty) | *T (wskaźnik) |
| tablica | []T |
| obiekt | Nazwana struktura |
| tablica mieszana | []interface{} |
Konwencje nazewnicze stosowane przez generator
- Inicjały pisane wielkimi literami:
id→ID,url→URL,api_key→APIKey. Odpowiada to zalecanemu stylowi Go (oraz regułomgo vet/staticcheck). - JSON w formacie snake_case → pola PascalCase:
first_name→FirstName. - Jednowyrazowe akronimy zachowane:
IPpozostajeIP,HTTPpozostajeHTTP. - Tag JSON:
json:"first_name"zachowuje oryginalny klucz, dzięki czemu kodowanie działa bez strat.
Pola opcjonalne: wskaźnik czy omitempty?
| Strategia | Kiedy stosować |
|---|---|
Wskaźnik (*T) |
Musisz odróżnić „brak“ od „wartości zerowej“ |
omitempty |
Chcesz tylko pomijać wartości zerowe przy marshalingu; przy unmarshalingu brakujące pola dostają zero |
| Żadne | Pole jest zawsze obecne, a wartości zerowe mają znaczenie |
Generator domyślnie stosuje wskaźnik + omitempty dla wszystkiego, co uznane za null; dostosuj to do własnej semantyki.
Najczęstsze błędy
- Użycie
int, gdy liczba całkowita z JSON przekraczaMaxInt32na platformie 32-bitowej. Dla znanych dużych wartości używajint64. - Ponowne kodowanie i utrata kolejności kluczy.
encoding/jsonwypisuje klucze w kolejności deklaracji pól, a nie w oryginalnej kolejności JSON. Jeśli potrzebujesz wyniku kanonicznego, posortuj je ręcznie. - Tablice o mieszanym kształcie.
[]interface{}traci bezpieczeństwo typów. Rozważ zamiast tego typy sumy z polem dyskryminatoratype. - Zapomnienie o
omitemptyprzy polach opcjonalnych. Bez niego pola opcjonalne są serializowane jako"foo": null, a nie pomijane.
Najczęściej zadawane pytania
Używaj wskaźników, gdy musisz odróżnić „pole nieobecne“ od „pole równe zero“. Używaj omitempty, gdy wartość zerowa nie jest dopuszczalną wartością biznesową ("", 0, false zawsze oznaczają „pomiń to“). Wiele zespołów wybiera jedno podejście i stosuje je konsekwentnie w całej bazie kodu.
Każdy zagnieżdżony obiekt staje się osobną nazwaną deklaracją struktury (np. User → Address). Typy są wstawiane w linii tylko wtedy, gdy zagnieżdżona struktura jest bardzo mała i użyta raz; w przeciwnym razie otrzymujesz czyste, wielokrotnego użytku typy.
Tak. id staje się ID, url staje się URL, api_key staje się APIKey. Tego oczekuje go vet i to zalecają najczęściej przewodniki po stylu Go.
Generator wypisuje zwykłe struktury ze standardowymi tagami json:. Niestandardowe implementacje UnmarshalJSON (np. dla dat w formatach spoza ISO) dodaj ręcznie po wygenerowaniu.
Powiązane narzędzia
Tabela ASCII
Pełna tabela ASCII od 0 do 127 z zapisem dziesiętnym, szesnastkowym, ósemkowym i binarnym oraz notacją numerycznych odwołań HTML, w tym kodami sterującymi NUL, LF i DEL.
Referencja znaków HTML
Przeszukiwalna lista encji HTML wraz z ich kodami nazwanymi i liczbowymi oraz kopiowaniem jednym kliknięciem specjalnych znaków i symboli.
Skróty klawiaturowe
Wyszukuj udokumentowane skróty domyślne VS Code, Chrome i Bash z GNU Readline w macOS, Windows i Linux.
Generator EditorConfig
Wygeneruj plik .editorconfig z własnymi regułami stylu i rozmiaru wcięć, końca linii, kodowania i białych znaków, aby uzyskać spójne formatowanie w różnych IDE i edytorach.
Walidator adresów e-mail
Zweryfikuj adres e-mail: sprawdzenie składni RFC 5322, sprawdzenie rekordu MX w czasie rzeczywistym oraz szczegóły dotyczące części lokalnej, domeny i długości. Żadna wiadomość nie jest wysyłana.
Formatowanie HTML
Formatuj HTML lokalnie w przeglądarce, używając wcięć dwóch lub czterech spacji. HTML nie jest wysyłany ani walidowany.
Narzędzie jest dostępne w innych językach
- JSON vers Go Struct [FR]
- JSON till Go-struktur [SV]
- JSON เป็นโครงสร้างข้อมูล Go [TH]
- JSON إلى بنية Go [AR]
- JSON ke Struktur Go [ID]
- JSON thành cấu trúc [VI]
- JSON을 Go 구조체로 변환 [KO]
- JSON zu Go Struct [DE]
- JSON a Estructura Go [ES]
- JSON naar Go-structuur [NL]
- JSON→Go構造体 [JA]
- JSON para Estrutura Go [PT]
- JSON в структуру данных [RU]
- JSON'dan Go Yapısına [TR]
- JSON 至Go结构 [ZH]
- JSON to Go Struct [EN]
- JSON in Struttura Go [IT]