Wklej Go po lewej i kliknij "Konwertuj" — zamienimy to w JSONWklej kod Go

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>.

1

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.

2

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.

3

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ą: