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

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

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

目录

背景

struct转map

使用json模块

使用reflect模块

使用第三方库

测试

总结

资料获取方法


背景

我们在前面介绍过怎么使用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,所以无法兼容首字母小写,而其他字母存在大写的情况.
参考代码:


                
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值