// DecodeFast will unmarshal the data if fast unmarshal is available. // This function can be used if you want to be sure the fast // unmarshal is used or in testing. // If you would like to have fallback to encoding/json you can use the // regular Decode() method. func (d *Decoder) DecodeFast(data []byte, v interface{}) error { f, ok := v.(unmarshalFaster) if !ok { return errors.New("ffjson unmarshal not available for type " + reflect.TypeOf(v).String()) } if d.fs == nil { d.fs = fflib.NewFFLexer(data) } else { d.fs.Reset(data) } return f.UnmarshalJSONFFLexer(d.fs, fflib.FFParse_map_start) }
// Unmarshal will act the same way as json.Unmarshal, except // it will choose the ffjson unmarshal function before falling // back to using json.Unmarshal. // The overhead of unmarshal is lower than on Marshal, // however this should still provide a speedup for your encoding. // It is ok to call this function even if no ffjson code has been // generated for the data type you pass in the interface. func Unmarshal(data []byte, v interface{}) error { f, ok := v.(unmarshalFaster) if ok { fs := fflib.NewFFLexer(data) return f.UnmarshalJSONFFLexer(fs, fflib.FFParse_map_start) } j, ok := v.(json.Unmarshaler) if ok { return j.UnmarshalJSON(data) } return json.Unmarshal(data, v) }
// Decode the data in the supplied data slice. func (d *Decoder) Decode(data []byte, v interface{}) error { f, ok := v.(unmarshalFaster) if ok { if d.fs == nil { d.fs = fflib.NewFFLexer(data) } else { d.fs.Reset(data) } return f.UnmarshalJSONFFLexer(d.fs, fflib.FFParse_map_start) } um, ok := v.(json.Unmarshaler) if ok { return um.UnmarshalJSON(data) } return json.Unmarshal(data, v) }
func (uj *Pos2D) UnmarshalJSON(input []byte) error { fs := fflib.NewFFLexer(input) return uj.UnmarshalJSONFFLexer(fs, fflib.FFParse_map_start) }
func (uj *ServiceDefinition) UnmarshalJSON(input []byte) error { fs := fflib.NewFFLexer(input) return uj.UnmarshalJSONFFLexer(fs, fflib.FFParse_map_start) }
func (uj *MtBroadCastMessage) UnmarshalJSON(input []byte) error { fs := fflib.NewFFLexer(input) return uj.UnmarshalJSONFFLexer(fs, fflib.FFParse_map_start) }