簡體   English   中英

如何將結構轉換為 base64 編碼字符串,反之亦然

[英]How to convert struct to base64 encoded string and viceversa

給定一個結構實例,我想將其轉換為 base64 編碼字符串。 並將其解碼回結構。

到目前為止,我已經嘗試過這個編碼: https://play.golang.org/p/tLLQzEXAnBC但一直遇到以下錯誤:

./prog.go:18:20: v.JSON undefined (type Vertex has no field or method JSON)
./prog.go:33:9: undefined: Base64

我哪里錯了?

導出字段名稱。 JSON 編解碼器忽略未導出的名稱。

type Vertex struct {
    FirstName int `json:"first-name"`
    LastName  int `json:"last-name"`
}

要進行編碼,請使用 base64 編碼器和 JSON 編碼器包裝緩沖區:

func encodeToBase64(v interface{}) (string, error) {
    var buf bytes.Buffer
    encoder := base64.NewEncoder(base64.StdEncoding, &buf)
    err := json.NewEncoder(encoder).Encode(v)
    if err != nil {
        return "", err
    }
    encoder.Close()
    return buf.String(), nil
}

反過來解碼:

func decodeFromBase64(v interface{}, enc string) error {
    return json.NewDecoder(base64.NewDecoder(base64.StdEncoding, strings.NewReader(enc))).Decode(v)
}

下面是函數的使用示例:

v0 := Vertex{1, 2}
enc, err := encodeToBase64(v0)
if err != nil {
    log.Fatal(err)
}
fmt.Println(enc)

var v1 Vertex
if err := decodeFromBase64(&v1, enc); err != nil {
    log.Fatal(err)
}

在 GoLang PlayGround 上運行示例

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM