gpt4 book ai didi

go struct JSON decode 始终为空 return &{}

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

我的处理程序可能做错了什么?

type Patient struct {
FirstName string
LastName string
}


func createHandler(w http.ResponseWriter, r *http.Request) {

r.ParseForm()
p := new(Patient)
err := json.NewDecoder(r.Body).Decode(&p)

if err != nil && err != io.EOF {
log.Fatal(err)
}

log.Print(p)
}

我总是从 curl -X POST $PATH -d '{"firstName": "Julian"}'

2016/01/23 17:33:50 &{  }

编辑

我添加了 fmt.Println(r) 并得到了这个

2016/01/23 18:33:22 &{POST /patients/ HTTP/1.1 1 1 map[Accept:[*/*] Content-Type:[application/json] User-Agent:[curl/7.46.0]] 0x9b2820 0 [] false localhost:8081 map[] map[] <nil> map[] [::1]:35394 /patients/ <nil> <nil>}

在调试了上一行之后,我意识到这是 gorilla 工具包的子路由器的问题

最佳答案

两件事:

由于您使用的是 JSON 库约定,因此您的表单数据应该是 FirstName 而不是 firstName。如果你真的想使用 firstName,你需要将这个结构标签添加到字段中:json:"firstName"

接下来,您不再需要将 & 放入 &p 中,因为 new(Patient) 已经返回了一个指针。只需输入 p

尽管就我个人而言,我只是执行 p := Patient{} 以便我知道它不是指针并在解码器中使用 &p

关于go struct JSON decode 始终为空 return &{},我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34969777/

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