1
0
mirror of https://github.com/json-iterator/go.git synced 2025-10-31 00:07:40 +02:00

#27 support json.Marshaler

This commit is contained in:
Tao Wen
2017-05-24 14:34:00 +08:00
parent e5a1e704ad
commit f6f159e108
4 changed files with 176 additions and 103 deletions

View File

@@ -7,6 +7,7 @@ import (
"time"
"unsafe"
"github.com/json-iterator/go/require"
"encoding/json"
)
func Test_customize_type_decoder(t *testing.T) {
@@ -127,4 +128,25 @@ func Test_unexported_fields(t *testing.T) {
str, err := MarshalToString(obj)
should.Nil(err)
should.Equal(`{"field1":"world","field-2":"abc"}`, str)
}
type ObjectImplementedMarshaler int
func (obj *ObjectImplementedMarshaler) MarshalJSON() ([]byte, error) {
return []byte(`"hello"`), nil
}
func Test_marshaler(t *testing.T) {
type TestObject struct {
Field *ObjectImplementedMarshaler
}
should := require.New(t)
val := ObjectImplementedMarshaler(100)
obj := TestObject{&val}
bytes, err := json.Marshal(obj)
should.Nil(err)
should.Equal(`{"Field":"hello"}`, string(bytes))
str, err := MarshalToString(obj)
should.Nil(err)
should.Equal(`{"Field":"hello"}`, str)
}