2 回答

TA貢獻(xiàn)1825條經(jīng)驗(yàn) 獲得超6個(gè)贊
您可能需要對(duì)十六進(jìn)制數(shù)據(jù)進(jìn)行編碼:
package main
import (
"encoding/base64"
"encoding/json"
"fmt"
)
type TTT struct {
Info []byte
Version int32
}
func main() {
b64Content := base64.StdEncoding.EncodeToString([]byte("0x97e302078c11ca8e7d75e2eedd1091eafec353864212085406d8d7dca0e3fa4a"))
info := fmt.Sprintf(`{"info":"%s","version":20}`, b64Content)
test := TTT{}
err := json.Unmarshal([]byte(info), &test)
if err != nil {
fmt.Println("Error in JSON unmarshalling from json marshalled object:", err)
return
}
fmt.Printf("%s", test.Info)
}

TA貢獻(xiàn)1775條經(jīng)驗(yàn) 獲得超11個(gè)贊
默認(rèn)的 json 解析器將從 base64 字符串解析 []byte。
如果您的源字符串不是 base64,那么您需要定義自己的封送拆收器。
type TTT struct {
Info bytes
Version int32
}
type bytes []byte
func (b *bytes) MarshalJSON() ([]byte, error) {
str := string(input)
bs, err :=hex.DecodeString(str[3:len(str)-1])
if err!=nil{
return err
}
*b = bs
return nil
}
func (b *bytes) UnmarshalJSON(input []byte) error {
*b = bytes(input)
return nil
}
func main() {
info := `{"info":"0x97e302078c11ca8e7d75e2eedd1091eafec353864212085406d8d7dca0e3fa4a","version":20}`
test := TTT{}
err := json.Unmarshal([]byte(info), &test)
if err != nil {
fmt.Println("Error in JSON unmarshalling from json marshalled object:", err)
return
}
fmt.Println((test))
}
- 2 回答
- 0 關(guān)注
- 313 瀏覽
添加回答
舉報(bào)