github.com/gagliardetto/solana-go@v1.11.0/rpc/transaction_version.go (about) 1 package rpc 2 3 import "strconv" 4 5 type TransactionVersion int 6 7 const ( 8 LegacyTransactionVersion TransactionVersion = -1 9 legacyVersion = `"legacy"` 10 ) 11 12 func (a *TransactionVersion) UnmarshalJSON(b []byte) error { 13 // Ignore null, like in the main JSON package. 14 s := string(b) 15 if s == "null" || s == `""` || s == legacyVersion { 16 *a = LegacyTransactionVersion 17 return nil 18 } 19 20 v, err := strconv.Atoi(s) 21 if err != nil { 22 return err 23 } 24 *a = TransactionVersion(v) 25 return nil 26 } 27 28 func (a TransactionVersion) MarshalJSON() ([]byte, error) { 29 if a == LegacyTransactionVersion { 30 return []byte(legacyVersion), nil 31 } else { 32 return []byte(strconv.Itoa(int(a))), nil 33 } 34 }