gpt4 book ai didi

go - 您可以通过 json 键字段动态迭代 Go 中的结构字段吗?

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

type Params struct {            
MyNum string `json:"req_num"`
}

所以我需要将 MyNum 的值分配给另一个变量,给定一个“req_num”字符串键,用于我在 beego< 中编写的某些功能框架。这在 Go 中是否可行?如果可行,如何实现?

我查看了反射库,找不到方法。

这是我正在尝试做的一个例子。 params 是一个 Params 类型的变量,MyNum 的值初始化为 “123” 让我们说。 f 目前没有得到 “123”。当我将其记录到控制台时,它显示 ""

b := "req_num"
r := reflect.ValueOf(params)
f := reflect.Indirect(r).FieldByName(b)

编辑:我将对多个参数执行此操作(上面我将 b 设置为示例字段值“req_num”)并且我想编写它以便我不必知道存储在 b 中的字段名称。

最佳答案

使用 JSON 编解码器来完成工作:

p, _ := json.Marshal(Params{MyNum: "123"}) // encode to JSON
var m map[string]interface{}
json.Unmarshal(p, &m) // decode to map
fmt.Println(m["req_num"]) // get value from the map

Runnable example in the Go Playground

您可以通过 piping 避免在内存中分配整个 JSON 文档。一个encoderdecoder :

value := Params{MyNum: "123"}
r, w := io.Pipe()
go func() {
json.NewEncoder(w).Encode(value)
w.Close()
}()
var m map[string]interface{}
json.NewDecoder(r).Decode(&m)
fmt.Println(m["req_num"])

Runnable example in the Go Playground

关于go - 您可以通过 json 键字段动态迭代 Go 中的结构字段吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50520396/

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