Konwerter JSON na struktury Go — Numio
Generuje definicje struktur Go z JSON przy użyciu portu json-to-go, sformatowanego za pomocą gofmt. Klucze stają się eksportowanymi polami CamelCase ze znacznikami json:"..."; zagnieżdżone obiekty stają się wbudowanymi anonimowymi strukturami, a wartość null staje się dowolną.
Zapisywanie struktury do json.Unmarshal odpowiedzi REST API innej firmy.
Kiedy go używać
- Zapisywanie struktury do json.Unmarshal odpowiedzi REST API innej firmy.
- Ładowanie typów żądań i odpowiedzi dla modułu obsługi Go HTTP na podstawie przykładowych ładunków.
Jak używać
- Wklej obiekt lub tablicę JSON do lewego edytora.
- Przeczytaj wygenerowaną strukturę; typ root ma zawsze nazwę AutoGenerated.
- Skopiuj go do swojego pakietu, zmień nazwę typu i wyodrębnij wbudowane struktury do nazwanych typów, jeśli ich ponownie użyjesz.
JSON
{
"id": 42,
"user_name": "ada",
"score": 9.5,
"active": true,
"deleted_at": null,
"tags": ["go", "json"],
"address": { "city": "Tokyo", "zip": "100-0001" }
}Przejdź do struktury
type AutoGenerated struct {
ID int `json:"id"`
UserName string `json:"user_name"`
Score float64 `json:"score"`
Active bool `json:"active"`
DeletedAt any `json:"deleted_at"`
Tags []string `json:"tags"`
Address struct {
City string `json:"city"`
Zip string `json:"zip"`
} `json:"address"`
}Szczegóły i ograniczenia
Generacja działa w przeglądarce. Nie ma ustawień dla nazwy typu, struktur wbudowanych i nazwanych ani tagów.
Inicjalizmy są pisane wielką literą (id staje się ID), a snake_case staje się CamelCase, przy czym oryginalny klucz jest przechowywany w tagu json.
Liczby całkowite stają się int (int64, gdy są duże), miejsca dziesiętne float64. null, puste tablice i tablice mieszane stają się dowolnymi lub []any.
Gdy obiekty w tablicy różnią się, niektórym brakuje kluczy.
FAQ
Czy mogę przekonwertować tablicę JSON w katalogu głównym?
Tak. Tworzy typ AutoGenerated []struct{...}, łączący pola wszystkich obiektów w tablicy.
Dlaczego pole null otrzymuje typ any?
Wartość null nie zawiera informacji o typie. Zastąp dowolny wskaźnikiem, takim jak *string lub *time.Time, aby zachować obsługę zera.
Czy generuje nazwane struktury zagnieżdżone?
Nie. Obiekty zagnieżdżone są wbudowanymi anonimowymi strukturami. Przenieś je ręcznie do nazwanych typów, jeśli chcesz się do nich odwołać.