go icon indicating copy to clipboard operation
go copied to clipboard

RegisterTypeEncoderFunc isEmptyFunc never called

Open kimmykong opened this issue 2 years ago • 0 comments

When I pass an isEmptyFunc function to RegisterTypeEncoderFunc, my isEmptyFunc is never called. My EncoderFunc for the type does get called. Request is for the isEmptyFunc to be called.

My data looks like this, where TypeC is an array that can have empty bytes saved. When I use jsoniter.RegisterFieldEncoderFunc(reflect2.TypeOf(TypeB{}).String(), "TypeC", encodeB, isBEmpty), both encodeB and isBEmpty functions get called, but I lose the support for array type and can't parse out the empty []byte

type TypeA struct {
	TypeB TypeB
}

type TypeB struct {
	TypeC []TypeC `msgpack:"as_array" json:"omitempty"`
}

type TypeC []byte

func fun() {
	jsoniter.RegisterTypeEncoderFunc(reflect2.TypeOf(TypeC{}).String(), encodeFunc, isEmptyFunc)
}

kimmykong avatar Feb 28 '23 19:02 kimmykong