Skip to content

Instantly share code, notes, and snippets.

@sanderpick
Created November 19, 2019 05:42
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save sanderpick/47d0f0feb7a79c5f5a07f2f87a7b906c to your computer and use it in GitHub Desktop.
Save sanderpick/47d0f0feb7a79c5f5a07f2f87a7b906c to your computer and use it in GitHub Desktop.
package main
import (
"encoding/json"
"fmt"
"log"
"reflect"
dynamicstruct "github.com/Ompluscator/dynamic-struct"
"github.com/alecthomas/jsonschema"
"github.com/xeipuuv/gojsonschema"
)
var personJSON = `
{
"FirstName": "John",
"LastName": "Doe",
"Age": 21
}
`
func main() {
var m map[string]interface{}
err := json.Unmarshal([]byte(personJSON), &m)
if err != nil {
log.Fatal(err)
}
builder := dynamicstruct.NewStruct()
for k, v := range m {
builder.AddField(k, v, "")
}
person := builder.Build().New()
if err := json.Unmarshal([]byte(personJSON), &person); err != nil {
log.Fatal(err)
}
valueType := reflect.TypeOf(person)
fmt.Println(valueType.String())
schema := jsonschema.Reflect(person)
_ = gojsonschema.NewGoLoader(schema)
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment