/json2go

JSON to Go CLI converter

Primary LanguageGoMIT LicenseMIT

json2go

This CLI tool allows for the simple conversion of a JSON payload into ready-to-use Go types. The JSON payload can be supplied via file, STDIN, or URL fetching. The generation is able to correctly parse all top-level data types as well as deeply nested arrays and objects. Optional CLI arguments allow the customization of the outputted Go files.

Installation

go install github.com/alehechka/json2go/cmd/json2go@latest

Usage

From local JSON file:

json2go generate --file=example.json

From STDIN:

cat example.json | json2go generate

From URL fetching:

json2go generate --url="https://gorest.co.in/public/v2/users"

CLI Arguments

Argument Example Type Purpose Default
File name --file=example.json string Valid path to local file on disk
URL --url="https://example.com string Valid URL that JSON can be fetched via GET request from.
Root Object Name --root=RootObject string Name for top-level object in JSON payload Root
Package Name --package=api string Name of package to generate types into. A nested package path is valid main
Output File Name --output string The name of the file that is generated. If a file is provided as input, will use matching name unless explicitly provided. The ".go" extension is not required and will be automatically appended. types.go
Time Format --time=2006-01-02 string Time format to use while parsing strings for potential time.Time variables. View time.Time constants for possible defaults: https://pkg.go.dev/time#pkg-constants RFC3339
Omit Empty --omitempty bool Appends the omitempty to all object variable tags. false
Alphabetical Order --alpha bool Sorts all keys into alphabetical order before generation. false
Debug logging --debug bool Will output debugging console logs. false
Quiet --quiet bool Will quiet fatal errors. false
STDOUT --out bool Instead of generating a Go file, will instead print the contents to STDOUT false

Local Development

While developing locally, the CLI can be used directly with the go run option as follows:

go run cmd/json2go/main.go generate --file=example.json <...args>