Skip to content

Repository files navigation

dynamic Build StatusGoDoc

Unmarshal JSON with dynamic (multiple) types.

Examples

See godoc

go get github.com/goburrow/dynamic
package main
import (
"encoding/json""fmt""github.com/goburrow/dynamic"
)
typeInfostruct {
TypestringMessagestring
}
typeErrorstruct {
Errors []string
}
typeStatusstruct {
Codeint
}
funcinit() {
dynamic.Register("info", func() interface{} { return&Info{} })
dynamic.Register("error", func() interface{} { return&Error{} })
dynamic.Register("status", func() interface{} { return&Status{} })
}
funcmain() {
json1:=`{"Type": "info", "Message": "hello"}`json2:=`{"Type": "error", "Errors": ["unknown"]}`json3:=`{"Type": "status", "Data": {"Code": 213}}`varobj1, obj2 dynamic.Typevarobj3 dynamic.Datajson.Unmarshal([]byte(json1), &obj1)
json.Unmarshal([]byte(json2), &obj2)
json.Unmarshal([]byte(json3), &obj3)
fmt.Printf("1: %#v\n", obj1.Value())
fmt.Printf("2: %#v\n", obj2.Value())
fmt.Printf("3: %#v\n", obj3.Value())
}

Output:

1: &main.Info{Type:"info", Message:"hello"}
2: &main.Error{Errors:[]string{"unknown"}}
3: &main.Status{Code:213}

TODO

  • Support sub-types.

About

Unmarshal JSON property with dynamic type in Go.

Resources

Stars

9 stars

Watchers

1 watching

Forks

Releases

Packages

Used by

Contributors

Languages