diff --git a/pkg/rpc/request/param.go b/pkg/rpc/request/param.go index d15923624..4918645bc 100644 --- a/pkg/rpc/request/param.go +++ b/pkg/rpc/request/param.go @@ -243,6 +243,11 @@ func (p *Param) UnmarshalJSON(data []byte) error { {ArrayT, &[]Param{}}, } + if bytes.Equal(data, []byte("null")) { + p.Type = defaultT + return nil + } + for _, cur := range attempts { r := bytes.NewReader(data) jd := json.NewDecoder(r) diff --git a/pkg/rpc/request/param_test.go b/pkg/rpc/request/param_test.go index 92980516a..70a40b41f 100644 --- a/pkg/rpc/request/param_test.go +++ b/pkg/rpc/request/param_test.go @@ -14,7 +14,7 @@ import ( ) 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"}], {"primary": 1}, {"sender": "f84d6a337fbc3d3a201d41da99e86b479e7a2554"}, {"cosigner": "f84d6a337fbc3d3a201d41da99e86b479e7a2554"}, @@ -36,6 +36,9 @@ func TestParam_UnmarshalJSON(t *testing.T) { Type: NumberT, Value: 123, }, + { + Type: defaultT, + }, { Type: ArrayT, Value: []Param{