diff options
| author | cuiweixie <cuiweixie@gmail.com> | 2022-02-12 15:19:18 +0000 |
|---|---|---|
| committer | Daniel Martí <mvdan@mvdan.cc> | 2022-03-02 11:27:34 +0000 |
| commit | 9f1239b90a7a48c5dc68a7eee08d8e1fba56db80 (patch) | |
| tree | b4c8dd3ed690401f2ad99b5c330b745bbd05bd0f /src/math/big | |
| parent | 6da16b6ad5787a043fc9978d2d009934e3b2e165 (diff) | |
| download | go-9f1239b90a7a48c5dc68a7eee08d8e1fba56db80.tar.xz | |
math/big: produce valid JSON in Int.MarshalJSON when nil
Fixes #50940.
Change-Id: Ie2a0c4505ca9d7e448017d9d00a020a6b3996be3
GitHub-Last-Rev: afd8c6b5598f43de25831c700b8d76cd97571426
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>
Diffstat (limited to 'src/math/big')
| -rw-r--r-- | src/math/big/intmarsh.go | 5 | ||||
| -rw-r--r-- | src/math/big/intmarsh_test.go | 14 |
2 files changed, 18 insertions, 1 deletions
diff --git a/src/math/big/intmarsh.go b/src/math/big/intmarsh.go index c1422e2710..ce429ffc11 100644 --- a/src/math/big/intmarsh.go +++ b/src/math/big/intmarsh.go @@ -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. diff --git a/src/math/big/intmarsh_test.go b/src/math/big/intmarsh_test.go index f82956ceaf..936669b380 100644 --- a/src/math/big/intmarsh_test.go +++ b/src/math/big/intmarsh_test.go @@ -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{"", "+", "-"} { |
