目录
背景
我们在前面介绍过怎么使用net/http发送json或者map数据,那么它能不能直接发送结构体数据呢?我们今天一起来学习结构体struct转map的三种方法,为后续做铺垫。
struct转map
使用json模块
直接使用json.Marshal方法来强制转化struct。
参考代码:
func JSONMethod(content interface{}) map[string]interface{} {
var name map[string]interface{}
if marshalContent, err := json.Marshal(content); err != nil {
fmt.Println(err)
} else {
d := json.NewDecoder(bytes.NewReader(marshalContent))
d.UseNumber() // 设置将float64转为一个number
if err := d.Decode(&name); err != nil {
fmt.Println(err)
} else {
for k, v := range name {
name[k] = v
}
}
}
return name
}
使用reflect模块
通过reflect模块来获取结构体的key值和value值,然后直接进行组装。这种方法不能识别结构体中的tag,所以无法兼容首字母小写,而其他字母存在大写的情况.
参考代码:
func

本文介绍了在Go语言中将结构体struct转换为map的三种方法,包括使用json模块的Marshal方法,使用reflect模块以及使用第三方库github.com/fatih/structs。每种方法的优缺点被讨论,其中使用json转换被推荐,因为它能处理结构体标签并具有良好的兼容性。
最低0.47元/天 解锁文章
676

被折叠的 条评论
为什么被折叠?



