forked from mirror/go-json
Fix issue147
This commit is contained in:
parent
d84b6bca18
commit
be35ec63b8
|
@ -3,6 +3,7 @@ package json_test
|
||||||
import (
|
import (
|
||||||
"bytes"
|
"bytes"
|
||||||
"encoding"
|
"encoding"
|
||||||
|
stdjson "encoding/json"
|
||||||
"errors"
|
"errors"
|
||||||
"fmt"
|
"fmt"
|
||||||
"log"
|
"log"
|
||||||
|
@ -1674,3 +1675,34 @@ func TestOmitEmpty(t *testing.T) {
|
||||||
t.Errorf(" got: %s\nwant: %s\n", got, optionalsExpected)
|
t.Errorf(" got: %s\nwant: %s\n", got, optionalsExpected)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
type testNullStr string
|
||||||
|
|
||||||
|
func (v *testNullStr) MarshalJSON() ([]byte, error) {
|
||||||
|
if *v == "" {
|
||||||
|
return []byte("null"), nil
|
||||||
|
}
|
||||||
|
|
||||||
|
return []byte(*v), nil
|
||||||
|
}
|
||||||
|
|
||||||
|
func TestIssue147(t *testing.T) {
|
||||||
|
type T struct {
|
||||||
|
Field1 string `json:"field1"`
|
||||||
|
Field2 testNullStr `json:"field2,omitempty"`
|
||||||
|
}
|
||||||
|
got, err := json.Marshal(T{
|
||||||
|
Field1: "a",
|
||||||
|
Field2: "b",
|
||||||
|
})
|
||||||
|
if err != nil {
|
||||||
|
t.Fatal(err)
|
||||||
|
}
|
||||||
|
expect, _ := stdjson.Marshal(T{
|
||||||
|
Field1: "a",
|
||||||
|
Field2: "b",
|
||||||
|
})
|
||||||
|
if !bytes.Equal(expect, got) {
|
||||||
|
t.Fatalf("expect %q but got %q", string(expect), string(got))
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
Loading…
Reference in New Issue