gpt4 book ai didi

json - 如何创建一个将 json 字符串转换为 golang 结构的通用函数?

转载 作者:数据小太阳 更新时间:2023-10-29 03:08:40 25 4
gpt4 key购买 nike

首先,我有以下结构:

type User struct {
Username string
Password string
FullName string
Mail string
}

我尝试创建以下函数:

func FromJson(emptyJsonAble interface{},jsonString string) interface{} {
err := json.Unmarshal([]byte(jsonString), &emptyJsonAble)
if err != nil {
panic(err)
}
return emptyJsonAble
}

我已经通过以下方式调用了该函数:

user := FromJson(User{}, str)

但该函数返回以下映射而不是用户结构:

map [全名:a 邮箱:a 密码:b 用户名:a]

如何返回结构本身(无需每次都转换返回的对象)

换句话说,如何让函数在 give 时将 emptyJsonAble 视为 User 类型。我曾尝试使用 reflect.Type,但我被卡住了

最佳答案

当您传递 User 结构时,您实际上是在将值的副本传递给它,在您的场景中,您想要做的是传递对该类型的指针引用。然后,因为您已经有了一个指针,所以您不需要在函数内部通过引用传递:

user := FromJson(&User{}, str)

err := json.Unmarshal([]byte(jsonString), emptyJsonAble)

https://play.golang.org/p/uXMcFCl138y

更新:

同样,因为您现在通过引用传递,您不需要返回未编码数据结构的副本:

https://play.golang.org/p/GJKqVJLbRCZ

在这两种情况下,我们可以看到结果是一样的,所以你的数据返回是不必要的

关于json - 如何创建一个将 json 字符串转换为 golang 结构的通用函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56446673/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com