在redis中将结构体存储为字符串

由于 Redis 仅存储字符串,我想知道如何使用 Go 将 Struct 转换为字符串,从而完成与 Javascript 的 JSON.stringify 等效的操作。

我试过类型转换:

string(the_struct)

但这会导致错误。


德玛西亚99
浏览 255回答 1
1回答

天涯尽头无女友

该encoding/json包可用于轻松地将 a 转换struct为 JSON 字符串,反之亦然(将 JSON 字符串解析为struct)。简单示例(在Go Playground上尝试):type Person struct {    Name string    Age  int}func main() {    p := Person{"Bob", 23}    // Struct -> JSON    data, err := json.Marshal(&p)    if err != nil {        panic(err)    }    fmt.Println(string(data))    // JSON -> JSON    var p2 Person    err = json.Unmarshal(data, &p2)    if err != nil {        panic(err)    }    fmt.Printf("%+v", p2)}输出:{"Name":"Bob","Age":23}{Name:Bob Age:23}笔记:的字段struct必须导出(以大写字母开头),否则json包(使用反射)将无法读取/写入它们。您还可以为结构字段指定标签以控制/微调 json 编组/解组过程,例如更改 JSON 文本中的名称:type Person struct {    Name string `json:"name"`    Age  int    `json:"years"`}通过此更改,上述应用程序的输出如下:{"name":"Bob","years":23}{Name:Bob Age:23}该json.Marshal()函数的文档详细说明了标签提供的可能性。通过实现json.Marshaler和json.Unmarshaler接口,您可以完全自定义编组/解组过程。此外,如果您的结构不是预定义的(例如,您事先不知道字段),您可以使用map[string]interface{}. 
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Go