Convert JSON to Go struct definitions with json tags. Part of the DevTools Surf developer suite. Browse more tools in the Converters collection.
Use Cases
Quickly scaffolding Go structs from a third-party API response
Converting JSON payloads to typed structs during backend development
Generating data models from sample API responses for a new Go service
Creating strongly-typed request bodies for Go HTTP client code
Tips
Paste nested JSON to generate embedded struct definitions
Check that json tags use snake_case matching your API response
Review pointer types for optional fields that may be null
Fun Facts
Go was publicly announced by Google on November 10, 2009, designed by Robert Griesemer, Rob Pike, and Ken Thompson.
Go's struct tags — the backtick annotations like `json:"name"` — were inspired by Java annotations but are resolved at runtime via reflection.
The encoding/json package in Go's standard library was one of the first packages written, reflecting JSON's importance in modern APIs.
FAQ
Are JSON tags included?
Yes — every field gets a `json:"original_name"` tag for round-trip fidelity. Zero-value fields get `,omitempty` when the sample suggests they're optional.
What about nested types?
Each nested object becomes its own struct type. Nested structs are named after the JSON key with PascalCase conversion.
How are arrays handled?
Go slices (`[]T`). Arrays of objects become `[]StructName`. Empty arrays in the sample fall back to `[]interface{}`.
Does it generate pointers for optional fields?
Optional. Default embeds values with `,omitempty`. Pointer mode uses `*T` — more explicit but adds allocations.