Generates Go (golang) Structs and Validation code from JSON schema.
ATTN: This is a customized version of the original generator based on the elastic fleet-server schema/code requirements.
- Go 1.8+
Install
$ go get -u github.com/elastic/go-json-schema-generate/...
or
Build
$ make
Run
$ schema-generate exampleschema.json
This schema
{
"$schema": "http://json-schema.org/draft-04/schema#",
"title": "Example",
"id": "http://example.com/exampleschema.json",
"type": "object",
"description": "An example JSON Schema",
"properties": {
"name": {
"type": "string"
},
"address": {
"$ref": "#/definitions/address"
},
"status": {
"$ref": "#/definitions/status"
}
},
"definitions": {
"address": {
"id": "address",
"type": "object",
"description": "Address",
"properties": {
"street": {
"type": "string",
"description": "Address 1",
"maxLength": 40
},
"houseNumber": {
"type": "integer",
"description": "House Number"
}
}
},
"status": {
"type": "object",
"properties": {
"favouritecat": {
"enum": [
"A",
"B",
"C"
],
"type": "string",
"description": "The favourite cat.",
"maxLength": 1
}
}
}
}
}
generates
package main
type Address struct {
HouseNumber int `json:"houseNumber,omitempty"`
Street string `json:"street,omitempty"`
}
type Example struct {
Address *Address `json:"address,omitempty"`
Name string `json:"name,omitempty"`
Status *Status `json:"status,omitempty"`
}
type Status struct {
Favouritecat string `json:"favouritecat,omitempty"`
}
See the test/ directory for more examples.