forked from mirror/go-json
parent
3fdc55a60a
commit
2ea7ab6e24
|
@ -9,6 +9,7 @@ import (
|
||||||
"fmt"
|
"fmt"
|
||||||
"log"
|
"log"
|
||||||
"math"
|
"math"
|
||||||
|
"math/big"
|
||||||
"reflect"
|
"reflect"
|
||||||
"regexp"
|
"regexp"
|
||||||
"strconv"
|
"strconv"
|
||||||
|
@ -2388,3 +2389,20 @@ func TestIssue324(t *testing.T) {
|
||||||
t.Fatalf("failed to encode. expected %q but got %q", expected, got)
|
t.Fatalf("failed to encode. expected %q but got %q", expected, got)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func TestIssue339(t *testing.T) {
|
||||||
|
type T1 struct {
|
||||||
|
*big.Int
|
||||||
|
}
|
||||||
|
type T2 struct {
|
||||||
|
T1 T1 `json:"T1"`
|
||||||
|
}
|
||||||
|
v := T2{T1{Int: big.NewInt(10000)}}
|
||||||
|
b, err := json.Marshal(&v)
|
||||||
|
assertErr(t, err)
|
||||||
|
got := string(b)
|
||||||
|
expected := `{"T1":10000}`
|
||||||
|
if got != expected {
|
||||||
|
t.Errorf("unexpected result: %v != %v", got, expected)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
|
@ -853,6 +853,9 @@ func (c *Compiler) implementsMarshalText(typ *runtime.Type) bool {
|
||||||
}
|
}
|
||||||
|
|
||||||
func (c *Compiler) isNilableType(typ *runtime.Type) bool {
|
func (c *Compiler) isNilableType(typ *runtime.Type) bool {
|
||||||
|
if !runtime.IfaceIndir(typ) {
|
||||||
|
return true
|
||||||
|
}
|
||||||
switch typ.Kind() {
|
switch typ.Kind() {
|
||||||
case reflect.Ptr:
|
case reflect.Ptr:
|
||||||
return true
|
return true
|
||||||
|
|
Loading…
Reference in New Issue