Better nil handling

pull/619/head
Taylor Gerring 10 years ago
parent 5d8be9c30d
commit c71ca1a089
  1. 21
      rpc/types.go

@ -24,10 +24,12 @@ import (
"strings"
"github.com/ethereum/go-ethereum/common"
"github.com/ethereum/go-ethereum/core/types"
)
type hexdata struct {
data []byte
isNil bool
}
func (d *hexdata) String() string {
@ -35,6 +37,9 @@ func (d *hexdata) String() string {
}
func (d *hexdata) MarshalJSON() ([]byte, error) {
if d.isNil {
return json.Marshal(nil)
}
return json.Marshal(d.String())
}
@ -56,11 +61,19 @@ func newHexData(input interface{}) *hexdata {
case common.Hash:
d.data = input.Bytes()
case *common.Hash:
if input == nil {
d.isNil = true
} else {
d.data = input.Bytes()
}
case common.Address:
d.data = input.Bytes()
// case *common.Address:
// d.data = input.Bytes()
case *common.Address:
if input == nil {
d.isNil = true
} else {
d.data = input.Bytes()
}
case *big.Int:
d.data = input.Bytes()
case int64:
@ -84,6 +97,7 @@ func newHexData(input interface{}) *hexdata {
type hexnum struct {
data []byte
isNil bool
}
func (d *hexnum) String() string {
@ -99,6 +113,9 @@ func (d *hexnum) String() string {
}
func (d *hexnum) MarshalJSON() ([]byte, error) {
if d.isNil {
return json.Marshal(nil)
}
return json.Marshal(d.String())
}

Loading…
Cancel
Save