mirror of
https://github.com/golang/go
synced 2024-11-17 07:04:44 -07:00
math/big: produce valid JSON in Int.MarshalJSON when nil
Fixes #50940.
Change-Id: Ie2a0c4505ca9d7e448017d9d00a020a6b3996be3
GitHub-Last-Rev: afd8c6b559
GitHub-Pull-Request: golang/go#50941
Reviewed-on: https://go-review.googlesource.com/c/go/+/381963
Trust: Cherry Mui <cherryyz@google.com>
Reviewed-by: Emmanuel Odeke <emmanuel@orijtech.com>
Trust: Emmanuel Odeke <emmanuel@orijtech.com>
Run-TryBot: Emmanuel Odeke <emmanuel@orijtech.com>
TryBot-Result: Gopher Robot <gobot@golang.org>
Reviewed-by: Daniel Martí <mvdan@mvdan.cc>
Trust: Daniel Martí <mvdan@mvdan.cc>
This commit is contained in:
parent
6da16b6ad5
commit
9f1239b90a
@ -67,7 +67,10 @@ func (z *Int) UnmarshalText(text []byte) error {
|
||||
|
||||
// MarshalJSON implements the json.Marshaler interface.
|
||||
func (x *Int) MarshalJSON() ([]byte, error) {
|
||||
return x.MarshalText()
|
||||
if x == nil {
|
||||
return []byte("null"), nil
|
||||
}
|
||||
return x.abs.itoa(x.neg, 10), nil
|
||||
}
|
||||
|
||||
// UnmarshalJSON implements the json.Unmarshaler interface.
|
||||
|
@ -97,6 +97,20 @@ func TestIntJSONEncoding(t *testing.T) {
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
func TestIntJSONEncodingNil(t *testing.T) {
|
||||
var x *Int
|
||||
b, err := x.MarshalJSON()
|
||||
if err != nil {
|
||||
t.Fatalf("marshaling of nil failed: %s", err)
|
||||
}
|
||||
got := string(b)
|
||||
want := "null"
|
||||
if got != want {
|
||||
t.Fatalf("marshaling of nil failed: got %s want %s", got, want)
|
||||
}
|
||||
}
|
||||
|
||||
func TestIntXMLEncoding(t *testing.T) {
|
||||
for _, test := range encodingTests {
|
||||
for _, sign := range []string{"", "+", "-"} {
|
||||
|
Loading…
Reference in New Issue
Block a user