rpc: convert null value to a defaultT

Right now we convert it is unmarshaler into a float64(0)
so an error is supressed.
This commit is contained in:
Evgenii Stratonikov 2020-06-08 16:38:44 +03:00
parent 7b1a54c934
commit dcaa82b32b
2 changed files with 9 additions and 1 deletions

View file

@ -192,6 +192,11 @@ func (p *Param) UnmarshalJSON(data []byte) error {
{ArrayT, &[]Param{}}, {ArrayT, &[]Param{}},
} }
if bytes.Equal(data, []byte("null")) {
p.Type = defaultT
return nil
}
for _, cur := range attempts { for _, cur := range attempts {
r := bytes.NewReader(data) r := bytes.NewReader(data)
jd := json.NewDecoder(r) jd := json.NewDecoder(r)

View file

@ -14,7 +14,7 @@ import (
) )
func TestParam_UnmarshalJSON(t *testing.T) { func TestParam_UnmarshalJSON(t *testing.T) {
msg := `["str1", 123, ["str2", 3], [{"type": "String", "value": "jajaja"}], msg := `["str1", 123, null, ["str2", 3], [{"type": "String", "value": "jajaja"}],
{"type": "MinerTransaction"}, {"type": "MinerTransaction"},
{"contract": "f84d6a337fbc3d3a201d41da99e86b479e7a2554"}, {"contract": "f84d6a337fbc3d3a201d41da99e86b479e7a2554"},
{"state": "HALT"}]` {"state": "HALT"}]`
@ -29,6 +29,9 @@ func TestParam_UnmarshalJSON(t *testing.T) {
Type: NumberT, Type: NumberT,
Value: 123, Value: 123,
}, },
{
Type: defaultT,
},
{ {
Type: ArrayT, Type: ArrayT,
Value: []Param{ Value: []Param{