作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
给定一个结构实例,我想将其转换为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
我要去哪里错了?
最佳答案
Export字段名称。 JSON编解码器将忽略未导出的名称。
type Vertex struct {
FirstName int `json:"first-name"`
LastName int `json:"last-name"`
}
要进行编码,请使用带有JSON编码器的base64编码器包装缓冲区:
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)
}
Run the example on the GoLang PlayGround。
关于go - 如何将结构转换为base64编码的字符串,反之亦然,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63126139/
我是一名优秀的程序员,十分优秀!