gpt4 book ai didi

go - 解码 JSON 对象并将值映射到 Go 中的结构

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

我已经使用 net http 库创建了一个网络服务器。我的问题是我想从一个 JSON 对象创建一个如下所示的结构,其键名称与结构属性不匹配。

type JsonData struct {
Operation string
IsStaff int
}

服务器发送过来的JSON对象是:

{
"function": "search",
"is_staff": 1
"description": "Test"
}

我发现的大多数解决方案都是创建另一个结构,其中 JSON 键和结构属性名称相互匹配。有没有办法将解码后的 JSON 映射到我的 JsonData 结构?下面是我当前的函数。

func handler(w http.ResponseWriter, r *http.Request){
switch r.Method {
case http.MethodPost:
var data JsonData
err := json.NewDecoder(r.Body).Decode(&data)
}
}

最佳答案

json.Marshal documentation 中搜索“标签” .

基本上,您可以使用特殊注释来标记结构字段,这些注释告诉默认的 un/marshaler 使用给定的名称而不是结构字段的(不区分大小写的)名称。

对于您的结构,您可能只需执行以下操作,具体取决于您的实际意图:

type JsonData struct {
Operation string `json:"function"`
IsStaff int `json:"is_staff"`
}

func main() {
jsonstr := `{"function":"search","is_staff":1,"description":"Test"}`

var jd JsonData
err := json.Unmarshal([]byte(jsonstr), &jd)

fmt.Printf("OK: jd=%#v, err=%v\n", jd, err)
// OK: jd=main.JsonData{Operation:"search", IsStaff:1}, err=<nil>
}

关于go - 解码 JSON 对象并将值映射到 Go 中的结构,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51937039/

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