gpt4 book ai didi

json NewDecoder 解码不解析整数

转载 作者:IT王子 更新时间:2023-10-29 02:03:38 25 4
gpt4 key购买 nike

我正在尝试创建一个 API 端点来将内容保存到数据库中,但是,我通过 POST 请求传递的整数似乎没有正确解析

这是我的结构:

type OnlineTestForm struct {
Form OnlineTestSet `json:"form"`
}
type OnlineTestSet struct {
ID int `db:"id" json:"id"`
OnlineTestSubjectId int `db:"online_test_subject_id" json:"online_test_subject_id"`
Name string `db:"name" json:"name"`
ScoreToPass int `db:"score_to_pass" json:"score_to_pass"`
TimeLimit int `db:"time_limit" json:"time_limit"`
Description string `db:"description" json:"description"`
Enabled bool `db:"enabled" json:"enabled"`
Online bool `db:"online" json:"online"`
TestType string `db:"test_type" json:"test_type"`
DocName string `db:"doc_name" json:"doc_name"`
}

还有我将 JSON 解析为结构的“有问题的”函数:

func NewOnlineTest(w http.ResponseWriter, r *http.Request, ps httprouter.Params) {
var jsonForm OnlineTestForm
json.NewDecoder(r.Body).Decode(&jsonForm)
err := addNewOnlineTest(jsonForm.Form)
if err != nil {
fmt.Println(err)
w.WriteHeader(500)
fmt.Fprint(w, "{\"error\": {\"message\": \"An error occured while adding new test - "+err.Error()+"\"}}")
return
}

w.WriteHeader(200)
}

我正在使用 httprouter因为我的路由器和我发布的路由是这样定义的

router.POST("/onlinetest/new", NewOnlineTest)

最后,我发送的测试 POST 请求具有以下负载:

{
"form":{
"name":"test",
"test_type":"document",
"score_to_pass":32,
"time_limit":324,
"enabled":true,
"online":true,
"online_test_subject_id":1
}
}

当我尝试使用 jsonForm.Form' 但我传入的整数如 time_limitandscore_to_pass` 是 0 时出现问题

{0 0 test 0 0  true true document    []}

最佳答案

找到了!

需要在我的 json struc 声明的末尾添加 string,不知道为什么但它起作用了

type OnlineTestSet struct {
ID int `db:"id" json:"id"`
OnlineTestSubjectId int `db:"online_test_subject_id" json:"online_test_subject_id,string"`
Name string `db:"name" json:"name"`
ScoreToPass int `db:"score_to_pass" json:"score_to_pass,string"`
TimeLimit int `db:"time_limit" json:"time_limit,string"`
Description string `db:"description" json:"description"`
Enabled bool `db:"enabled" json:"enabled"`
Online bool `db:"online" json:"online"`
TestType string `db:"test_type" json:"test_type"`
DocName string `db:"doc_name" json:"doc_name"`
}

关于json NewDecoder 解码不解析整数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41738937/

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