|
|
|
@@ -665,3 +665,32 @@ func Test_ObjectToJSON3(t *testing.T) { |
|
|
|
// So(ret, ShouldResemble, val) |
|
|
|
}) |
|
|
|
} |
|
|
|
|
|
|
|
type BaseCallback interface{} |
|
|
|
type StCallback struct { |
|
|
|
Metadata `union:"StCallback"` |
|
|
|
Type string |
|
|
|
Value string |
|
|
|
} |
|
|
|
|
|
|
|
func (st *StCallback) OnUnionSerializing() { |
|
|
|
st.Value = "called" |
|
|
|
st.Type = "StCallback" |
|
|
|
} |
|
|
|
|
|
|
|
func Test_ObjectToJSONEx4(t *testing.T) { |
|
|
|
Convey("序列化Callback", t, func() { |
|
|
|
union := types.NewTypeUnion[BaseCallback](&StCallback{}) |
|
|
|
UseTypeUnionInternallyTagged(&union, "Type") |
|
|
|
|
|
|
|
val := []BaseCallback{&StCallback{}} |
|
|
|
data, err := ObjectToJSONEx(val) |
|
|
|
So(err, ShouldBeNil) |
|
|
|
|
|
|
|
ret, err := JSONToObjectEx[[]BaseCallback](data) |
|
|
|
So(err, ShouldBeNil) |
|
|
|
|
|
|
|
So(len(ret), ShouldEqual, 1) |
|
|
|
So(ret[0].(*StCallback).Value, ShouldEqual, "called") |
|
|
|
}) |
|
|
|
} |