【Golang 接口自动化07】struct转map的三种方式

本文介绍了Golang中将struct转换为map的三种方法:使用json模块、reflect模块和第三方库structs。分别给出了示例代码,并在测试中展示了各自的效果。在考虑兼容性和推荐使用官方库的情况下,文章建议首选json转换方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

背景

我们在前面介绍过怎么使用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值,然后直接进行组装。这种方法不能识别结构体中的

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值