polyjson
is just a JSON serde which can construct your objects for you.
For example:
// register a type
type myFancyStruct struct {
A int
}
polyjson.RegisterType(myFancyStruct{})
// serialize:
b, err := polyjson.MarshalWithTypeIDs(map[string]any{"B": myFancyStruct{A: 1}}, polyjson.TypeRegistry())
if err != nil {
panic(err)
}
// deserialize:
var cpy map[string]any
err = polyjson.UnmarshalWithTypeIDs(b, &cpy, polyjson.TypeRegistry())
if err != nil {
panic(err)
}
if cpy["B"].(myFancyStruct).A != 1 {
panic("unexpected value")
}
As you can see in this example, it automatically constructed myFancyStruct
inside cpy
.