JSON to Go Struct Generator

Infer Go struct definitions with JSON field tags from example JSON.

  • 100% client-side · your data never leaves your browser
  • Instant, no rate limits
  • Free, no sign-up
Input JSON
Go structs

Your result appears here

Paste JSON into the panel on the left — everything runs privately in your browser.

Overview

JSON to Go Struct Generator

Generate Go struct definitions from JSON samples with inferred field types and json tags. Ideal for unmarshaling API responses, building clients, and scaffolding services without manually typing every nested field. Client-side and private — your JSON never leaves the browser.

No uploadsNo sign-upOpen source
  1. Why generate Go structs from JSON?

    Go's encoding/json package needs struct fields and tags to map JSON keys to typed values. When integrating a new API, copying field names from documentation often misses optional fields or wrong types. Generating from a real response captures the shape you actually receive.

  2. What gets inferred

    Objects become structs with exported (capitalized) field names. Whole numbers map to int and decimals to float64. Arrays become slices, and mixed-type arrays fall back to []interface{}. Nested objects become nested struct types with generated names, so a deeply nested API response produces a complete set of Go types in one pass.

    • Objects to structs with exported fields
    • json:"..." tags matching the original keys
    • int / float64 / bool / string from JSON scalars
    • Slices for arrays, interface{} for mixed types
  3. Unmarshaling API responses

    The generated structs plug straight into encoding/json: pass a pointer to json.Unmarshal along with the response body and Go fills in the fields by matching tags. Generating from a real payload — rather than hand-typing from docs — means you capture optional fields and actual types instead of guessing.

  4. Review before shipping

    Generated structs are a fast starting point, not a final contract. Numbers that are sometimes whole and sometimes decimal should be widened to float64; timestamps often deserve time.Time with a custom format; and nullable fields may need pointers or omitempty. Treat the output as a scaffold you refine.

FAQ

Frequently asked questions

How do I generate a Go struct from JSON?

Paste a JSON sample and JsonDrift infers a matching set of Go structs with json tags, ready to paste into your package and use with encoding/json.

Are json tags included?

Yes. Each field gets a json:"..." tag reflecting the original JSON key so encoding/json maps it correctly.

What types are used for numbers?

Whole numbers become int and decimals become float64. If a field varies, widen it to float64 to avoid unmarshal errors.

Can I use this for production APIs?

Use generated structs as a starting point. Review optional fields, enums, pointers for nullables, and time formats before shipping.

Continue with a related tool

All tools

Learn more in our guides

All guides