github.com/MetalBlockchain/metalgo@v1.11.9/utils/json/uint16.go (about)

     1  // Copyright (C) 2019-2024, Ava Labs, Inc. All rights reserved.
     2  // See the file LICENSE for licensing terms.
     3  
     4  package json
     5  
     6  import "strconv"
     7  
     8  type Uint16 uint16
     9  
    10  func (u Uint16) MarshalJSON() ([]byte, error) {
    11  	return []byte(`"` + strconv.FormatUint(uint64(u), 10) + `"`), nil
    12  }
    13  
    14  func (u *Uint16) UnmarshalJSON(b []byte) error {
    15  	str := string(b)
    16  	if str == Null {
    17  		return nil
    18  	}
    19  	if len(str) >= 2 {
    20  		if lastIndex := len(str) - 1; str[0] == '"' && str[lastIndex] == '"' {
    21  			str = str[1:lastIndex]
    22  		}
    23  	}
    24  	val, err := strconv.ParseUint(str, 10, 16)
    25  	*u = Uint16(val)
    26  	return err
    27  }