repositorypackage
0.0.0-20251007235854-73e9c487eba6
Repository: https://github.com/tmc/json-to-struct.git
Documentation: pkg.go.dev
# README
json-to-struct
json-to-struct attempts to generate go struct definitions from json documents
Example
$ curl -s https://api.github.com/users/tmc | json-to-struct -name=User
package main
type User struct {
AvatarURL string `json:"avatar_url"`
Bio interface{} `json:"bio"`
Blog string `json:"blog"`
Company string `json:"company"`
CreatedAt string `json:"created_at"`
Email string `json:"email"`
EventsURL string `json:"events_url"`
Followers float64 `json:"followers"`
FollowersURL string `json:"followers_url"`
Following float64 `json:"following"`
FollowingURL string `json:"following_url"`
GistsURL string `json:"gists_url"`
GravatarID string `json:"gravatar_id"`
Hireable bool `json:"hireable"`
HtmlURL string `json:"html_url"`
ID float64 `json:"id"`
Location string `json:"location"`
Login string `json:"login"`
Name string `json:"name"`
OrganizationsURL string `json:"organizations_url"`
PublicGists float64 `json:"public_gists"`
PublicRepos float64 `json:"public_repos"`
ReceivedEventsURL string `json:"received_events_url"`
ReposURL string `json:"repos_url"`
StarredURL string `json:"starred_url"`
SubscriptionsURL string `json:"subscriptions_url"`
Type string `json:"type"`
UpdatedAt string `json:"updated_at"`
URL string `json:"url"`
}
Installation
$ go install github.com/tmc/json-to-struct@latest
Features
- Struct Extraction: Automatically extract repeated nested structures with
-extract-structs
- Streaming Mode: Progressive output for large datasets with
-stream
- Roundtrip Validation: Verify generated structs with
-roundtrip
- Field Statistics: Add occurrence metadata with
-stat-comments
- Custom Field Ordering: Control field order with
-field-order
(alphabetical, encounter, common-first, rare-first) - Template Support: Custom output formatting via
-template
- NDJSON Support: Process newline-delimited JSON
Usage
# Basic usage
$ curl -s https://api.github.com/users/tmc | json-to-struct -name=User
# Extract repeated structs to reduce duplication
$ cat data.json | json-to-struct -name=Data -extract-structs
# Generate with field statistics comments
$ cat data.json | json-to-struct -name=Data -stat-comments
# Validate generated structs with roundtrip testing
$ cat data.json | json-to-struct -name=Data -roundtrip
# Process large datasets with streaming output
$ cat large.json | json-to-struct -name=Data -stream
# Custom field ordering by occurrence frequency
$ cat data.json | json-to-struct -name=Data -field-order=common-first
Related Work
github.com/ChimeraCoder/gojson github.com/str1ngs/jflect
License
json-to-struct is free software distributed under Version 3 of the GNU Public License.
As of the time of writing, this is the same license used for gcc (and therefore gccgo), so it is unlikely to restrict use in any way. Note that the GPL does not extend to any output generated by json-to-struct; the GPL only applies to software which includes copies of json-to-struct itself.