Given an input like
{
"$schema" : "http://json-schema.org/draft-04/schema#",
"title" : "myObject",
"type" : "object",
"additionalProperties" : false,
"properties" : {
"type" : {
"type" : "string",
"enum" : [ "x", "y", "z" ],
"default" : "x"
}
}
this would currently get generated like
type MyObject {
Type string `json:"type"`
}
It'd be really handy to generate a type for the enum, such as:
type MyObjectType string
const (
MyObjectType_X MyObjectType = "x"
MyObjectType_Y = "y"
MyObjectType_Z = "z"
)
type MyObject {
Type MyObjectType `json:"type"`
}
Where MyObjectType would have a MarshalJSON/UnmarshalJSON that validated that the value was a valid MyObjectType, and produce an error if it was not.
If there's concerns about backwards compatibility, some additional niceties might be to keep the Type field as a string, but add validation to MarshalJSON/UnmarshalJSON to ensure it's a valid value, and error if it was not.
This is something I can probably dedicate a little bit of time into imlpementing, but I'm not sure what approach would be best in the eyes of the maintainer, or if there are other options I hadn't considered that may be desirable.
Given an input like
{ "$schema" : "http://json-schema.org/draft-04/schema#", "title" : "myObject", "type" : "object", "additionalProperties" : false, "properties" : { "type" : { "type" : "string", "enum" : [ "x", "y", "z" ], "default" : "x" } }this would currently get generated like
It'd be really handy to generate a type for the enum, such as:
Where
MyObjectTypewould have aMarshalJSON/UnmarshalJSONthat validated that the value was a validMyObjectType, and produce an error if it was not.If there's concerns about backwards compatibility, some additional niceties might be to keep the
Typefield as a string, but add validation toMarshalJSON/UnmarshalJSONto ensure it's a valid value, and error if it was not.This is something I can probably dedicate a little bit of time into imlpementing, but I'm not sure what approach would be best in the eyes of the maintainer, or if there are other options I hadn't considered that may be desirable.