@@ -371,6 +371,10 @@ func (b *intWithPtrMarshalText) UnmarshalText(data []byte) error {
371
371
return (* intWithMarshalText )(b ).UnmarshalText (data )
372
372
}
373
373
374
+ type mapStringToStringData struct {
375
+ Data map [string ]string `json:"data"`
376
+ }
377
+
374
378
type unmarshalTest struct {
375
379
in string
376
380
ptr interface {}
@@ -401,6 +405,7 @@ var unmarshalTests = []unmarshalTest{
401
405
{in : `"invalid: \uD834x\uDD1E"` , ptr : new (string ), out : "invalid: \uFFFD x\uFFFD " },
402
406
{in : "null" , ptr : new (interface {}), out : nil },
403
407
{in : `{"X": [1,2,3], "Y": 4}` , ptr : new (T ), out : T {Y : 4 }, err : & UnmarshalTypeError {"array" , reflect .TypeOf ("" ), 7 , "T" , "X" }},
408
+ {in : `{"X": 23}` , ptr : new (T ), out : T {}, err : & UnmarshalTypeError {"number" , reflect .TypeOf ("" ), 8 , "T" , "X" }}, {in : `{"x": 1}` , ptr : new (tx ), out : tx {}},
404
409
{in : `{"x": 1}` , ptr : new (tx ), out : tx {}},
405
410
{in : `{"x": 1}` , ptr : new (tx ), err : fmt .Errorf ("json: unknown field \" x\" " ), disallowUnknownFields : true },
406
411
{in : `{"F1":1,"F2":2,"F3":3}` , ptr : new (V ), out : V {F1 : float64 (1 ), F2 : int32 (2 ), F3 : Number ("3" )}},
@@ -866,6 +871,18 @@ var unmarshalTests = []unmarshalTest{
866
871
err : fmt .Errorf ("json: unknown field \" extra\" " ),
867
872
disallowUnknownFields : true ,
868
873
},
874
+ // issue 26444
875
+ // UnmarshalTypeError without field & struct values
876
+ {
877
+ in : `{"data":{"test1": "bob", "test2": 123}}` ,
878
+ ptr : new (mapStringToStringData ),
879
+ err : & UnmarshalTypeError {Value : "number" , Type : reflect .TypeOf ("" ), Offset : 37 , Struct : "mapStringToStringData" , Field : "data" },
880
+ },
881
+ {
882
+ in : `{"data":{"test1": 123, "test2": "bob"}}` ,
883
+ ptr : new (mapStringToStringData ),
884
+ err : & UnmarshalTypeError {Value : "number" , Type : reflect .TypeOf ("" ), Offset : 21 , Struct : "mapStringToStringData" , Field : "data" },
885
+ },
869
886
}
870
887
871
888
func TestMarshal (t * testing.T ) {
0 commit comments