@@ -60,15 +60,16 @@ func BytesToAddress(b []byte) (Address, error) {
60
60
61
61
// HexToAddress convert hex address string to Address
62
62
func HexToAddress (hexStr string ) (Address , error ) {
63
- if len (hexStr ) != hexAddressLength {
63
+ s := util .TrimQuotes (hexStr )
64
+ if len (s ) != hexAddressLength {
64
65
return Address {}, errAddressLen
65
66
}
66
67
67
- if ! strings .HasPrefix (hexStr , AddressPrefix ) {
68
+ if ! strings .HasPrefix (s , AddressPrefix ) {
68
69
return Address {}, errAddressPrefix
69
70
}
70
71
71
- addr := hexStr [addressPrefixLen :]
72
+ addr := s [addressPrefixLen :]
72
73
73
74
key , err := AddressEncoding .DecodeString ("1111" + addr [0 :52 ])
74
75
if err != nil {
@@ -218,5 +219,19 @@ func (addr *Address) UnmarshalBinary(text []byte) error {
218
219
219
220
//MarshalJSON implements json.Marshaler interface
220
221
func (addr * Address ) MarshalJSON () ([]byte , error ) {
221
- return []byte (addr .String ()), nil
222
+ //buffer := bytes.NewBufferString(`"`)
223
+ //buffer.WriteString(addr.String())
224
+ //buffer.WriteString(`"`)
225
+ //return buffer.Bytes(), nil
226
+ return []byte ("\" " + addr .String () + "\" " ), nil
227
+ }
228
+
229
+ //UnmarshalJSON implements json.UnmarshalJSON interface
230
+ func (addr * Address ) UnmarshalJSON (b []byte ) error {
231
+ tmp , err := HexToAddress (string (b ))
232
+ if err != nil {
233
+ return err
234
+ }
235
+ copy ((* addr )[:], tmp [:])
236
+ return nil
222
237
}
0 commit comments