Konwerter Go do JSON
Wklej struct Go plus composite literal. Odbierz czysty JSON.
Co robi to narzędzie
Masz struct Go z tagami json:"..." i gdzieś composite literal (order := Order{...}), a potrzebujesz JSON-a, którego wypluje encoding/json. Wklej oba do lewego edytora i kliknij Konwertuj. Narzędzie czyta tagi, stosuje reguły omitempty i -, ogarnia wskaźniki nil i oddaje JSON identyczny z tym, co wygenerowałby json.MarshalIndent — możesz sobie darować bieganinę przez go run.
Trzyma się prawdziwej semantyki marshallingu Go, żadnego naiwnego podmieniania. Nazwy wyeksportowanych pól są zmieniane przez pierwszą część taga json. omitempty wyrzuca wartości zerowe (pusty string, 0, false, nil, pusty slice/mapa). Tag - całkiem usuwa pole. Pola embedded (anonimowych) structów są promowane tak, jak robi to encoding/json. time.Time wychodzi jako string RFC 3339 w formacie zgodnym z RFC 8259, a slice'y bajtów ([]byte) są kodowane w base64.
Typy liczbowe idą według reguł Go: float64 zachowuje precyzję, int/int64 pozostają liczbami, a wskaźnik nil robi się JSON-owym nullem. Slice'y zostają JSON-owymi tablicami; slice nil też staje się null (nie []), co pasuje do domyślnego zachowania Marshal. map[string]V robi się JSON-owym obiektem. Wklej kilka structów naraz — każda instancja ląduje jako wpis najwyższego poziomu.
Jak tego używać
Trzy kroki. Działa dla małego structa albo całego pliku <code>types.go</code>.
Wklej swoje Go (albo sprawdź przykład)
Wrzuć definicje structów i composite literal (order := Order{...}) do lewego edytora. Jeden struct, kilka structów z polami embedded albo deklaracja na poziomie pakietu — wszystko gra. Kliknij Wczytaj przykład, żeby dostać sensowny punkt startu.
Linię package i importy śmiało zostaw — parser i tak je ignoruje. Tagi structów, receivery metod i komentarze — bez problemu. Dla porównania, dokumentacja encoding/json.Marshal wypisuje każdą regułę, której trzyma się to narzędzie. Jak trafisz na jakiś edge case, warto zerknąć do repo źródeł Go.
Kliknij Konwertuj
Kliknij zielony przycisk Konwertuj. Narzędzie parsuje definicje structów, rozwiązuje composite literal, stosuje reguły tagów i wypluwa JSON z wcięciami.
Skopiuj JSON
Prawy panel wypełnia się JSON-em gotowym do requesta API, tabelki testów, pliku konfiguracyjnego albo fixtury, którą wczytujesz przez os.ReadFile.
Kiedy to realnie ratuje tyłek
Przykłady request/response dla handlerów HTTP
Masz struct requesta albo response dla handlera <code>net/http</code> albo <code>gin</code>. Wklej go z literalem i dostaniesz body JSON gotowe do wysłania curl-em albo wklejenia w Postmana.
Fixtury do testów table-driven
Zamień instancję structa z table testa na samodzielny plik JSON pod golden-file testing albo zewnętrzne narzędzia.
CRD-y i manifesty Kubernetesa
Zamień struct Go, który reprezentuje custom resource albo payload controllera, na JSON, którego używa <code>kubectl apply</code> albo API Kubernetesa.
Wiadomości Kafka / NATS / gRPC-gateway
Serializuj struct wiadomości Go do JSON-a na testy producera, przykładowe payloady albo dokumentację — bez stawiania całego pipeline'u.
Częste pytania
Czy honoruje tag json structa?
Tak. Pierwsza wartość taga zmienia nazwę pola, omitempty wyrzuca wartości zerowe, a - całkowicie wyklucza pole. Pasuje do reguł opisanych w referencji encoding/json Marshal.
Jak obsługiwane są time.Time i []byte?
time.Time jest formatowane jako RFC 3339 (np. "2026-03-14T10:30:00Z"), zgodnie z time.Time.MarshalJSON. []byte jest kodowane w base64 jako string JSON — to domyślne zachowanie stdliba.
A co ze wskaźnikami nil i slice'ami nil?
Wskaźnik nil robi się JSON-owym nullem. Slice nil też staje się null (a nie []) — takie są domyślne ustawienia Go. Jeśli chcesz pustą tablicę, zainicjalizuj slice'a jako []T{}.
Czy pola embedded (anonimowych) structów są promowane?
Tak. Pola embedded structa są spłaszczane do zewnętrznego obiektu, chyba że embedded struct ma własny tag json — te same reguły, które stosuje encoding/json.
Czy mogę wkleić cały plik z kilkoma structami?
Jasne. Każdy typ structa, dla którego we wklejanym kodzie pojawia się instancja, wylądoje jako osobny wpis w JSON-ie. Zagnieżdżone typy structów rozwijają się inline tam, gdzie są użyte.
Czy mój kod jest gdzieś przechowywany?
Kod leci do backendu do konwersji i nie jest zapisywany ani logowany. Jak z każdym narzędziem online — przed wklejeniem wrażliwego kodu rzuć na niego okiem.
Inne narzędzia, które mogą się przydać
Go do JSON to tylko jeden element układanki. Te dobrze z nim współpracują: