|
@@ -0,0 +1,36 @@
|
|
|
|
|
+package test
|
|
|
|
|
+
|
|
|
|
|
+import (
|
|
|
|
|
+ "bytes"
|
|
|
|
|
+ "encoding/json"
|
|
|
|
|
+ "github.com/json-iterator/go"
|
|
|
|
|
+ "testing"
|
|
|
|
|
+ "github.com/stretchr/testify/require"
|
|
|
|
|
+)
|
|
|
|
|
+
|
|
|
|
|
+
|
|
|
|
|
+type Foo struct {
|
|
|
|
|
+ Bar interface{}
|
|
|
|
|
+}
|
|
|
|
|
+
|
|
|
|
|
+func (f Foo) MarshalJSON() ([]byte, error) {
|
|
|
|
|
+ var buf bytes.Buffer
|
|
|
|
|
+ err := json.NewEncoder(&buf).Encode(f.Bar)
|
|
|
|
|
+ return buf.Bytes(), err
|
|
|
|
|
+}
|
|
|
|
|
+
|
|
|
|
|
+
|
|
|
|
|
+// Standard Encoder has trailing newline.
|
|
|
|
|
+func TestEncodeMarshalJSON(t *testing.T) {
|
|
|
|
|
+
|
|
|
|
|
+ foo := Foo {
|
|
|
|
|
+ Bar: 123,
|
|
|
|
|
+ }
|
|
|
|
|
+ should := require.New(t)
|
|
|
|
|
+ var buf, stdbuf bytes.Buffer
|
|
|
|
|
+ enc := jsoniter.ConfigCompatibleWithStandardLibrary.NewEncoder(&buf)
|
|
|
|
|
+ enc.Encode(foo)
|
|
|
|
|
+ stdenc := json.NewEncoder(&stdbuf)
|
|
|
|
|
+ stdenc.Encode(foo)
|
|
|
|
|
+ should.Equal(stdbuf.Bytes(), buf.Bytes())
|
|
|
|
|
+}
|