JSON to Go Struct Converter
Paste JSON, get a Go model for it.
Updated
This tool runs in your browser. No account or signup is required.
Common JSON to Go tasks
Developers typically reach for this page when they need to generate Go structs from JSON; convert API response JSON to Go struct; create Go types with JSON tags. The tool is built for quick, practical work rather than a generic demo.
What matters in a json to go workflow
When developers compare online tools for this job, the useful capabilities tend to center on Go struct tags, nested structs, root naming, type inference. This page keeps those practical needs in mind while linking to related tools when a different workflow is a better fit.
What is JSON to Go?
JSON to Go reads a JSON object and writes a Go type with one field per top-level key. Each field gets a json struct tag.
What problem does it solve?
Typing out model classes by hand for every API response is repetitive. Generating the first draft from a real JSON sample saves the boring part.
How to use JSON to Go
- Paste a JSON object into the input box.
- Press the convert button.
- Copy the generated Go code and adjust names or types to fit your project.
Example
Input
{"id":1,"name":"Ada"}Go output
type Root struct {
Id float64 `json:"id"`
Name string `json:"name"`
}What you can do with JSON to Go
- JSON to Go
- Generate Go class from JSON
- Go model from JSON
Common use cases
- Creating models for a new API integration
- Mocking a type from a sample response
- Starting a DTO without typing every property
Related developer tasks
- JSON to Go
- Generate Go class from JSON
- Go model from JSON
How JSON maps to Go types
The tool reads the top-level keys of a JSON object and writes one struct field per key. Types come from the sample values you paste:
- number becomes float64, boolean becomes bool and string becomes string.
- null, arrays and nested objects become interface{}.
- Field names are capitalized so they are exported, and each field gets a json tag with the original key.
JSON to Go example
Input:
{"id":1,"name":"Ada","active":true,"address":{"city":"London"},"tags":["math"]}
// Go output
type Root struct {
Id float64 `json:"id"`
Name string `json:"name"`
Active bool `json:"active"`
Address interface{} `json:"address"`
Tags interface{} `json:"tags"`
}What to review before you use the Go output
- Paste a JSON object, not a bare array. The tool walks the top-level keys, so an array root produces meaningless index names.
- Nested objects and arrays are not expanded into their own types. In the example, address and tags both fall back to a generic type, so write those types by hand.
- One sample cannot show which fields are optional or which numbers are integers. Numbers are always mapped to a floating-point type.
- The json tags let encoding/json match keys correctly even after capitalization. Run gofmt on the result to align the fields.
- Replace interface{} with real struct or slice types for nested data.
Related: JSON to Java, JSON to TypeScript, JSON Formatter, JSON Validator
JSON to Go FAQ
Does it handle nested objects and arrays?
It maps top-level keys. Nested objects and arrays come out as a generic type (such as object or any), so you will want to refine those by hand.
How are field types chosen?
From the sample values: numbers, booleans and strings get matching types, anything else falls back to a generic type. One sample cannot show whether a field is optional.
Is my data sent to a server?
The processing runs in your browser, so what you paste into the tool is not uploaded for processing. As with any tool, avoid pasting live secrets you cannot afford to leak.
Why is every number a float64?
encoding/json decodes JSON numbers into float64 by default and a sample cannot show whether a value is a whole number. Change it to int where appropriate.
Related Developer Tools
- JSON Formatter JSON Tools
- JSON Validator JSON Tools
- JSON to TypeScript JSON Tools
- JSON to Python JSON Tools
- JSON to Java JSON Tools
- JSON to C# JSON Tools
Looking for something else? Browse all developer tools.

