gpt4 book ai didi

go - 如何在golang中解码查询参数

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

我有参数

id_user
phone_number

我想解码成我的结构

type User struct{
IDUser int `json:"id_user"`
PhoneNumber string `json:"phone_number"`
}

是否可以解码成结构体?我使用 gorilla 模式。我的代码:

func User(w http.ResponseWriter, r *http.Request){
var decoder = schema.NewDecoder()
var user User
if err := r.ParseForm(); err != nil {
fmt.Println(err)
}

err := decoder.Decode(&user, r.PostForm)
if err != nil {
fmt.Println(err)
}
respBody, err := json.Marshal(user)
w.Header().Set("Content-Type", "application/json")
w.WriteHeader(http.StatusOK)
w.Write(respBody)
}

我输入 id_user = 1 和 phone_number = qwerty。但结果是 id_user = 0 和 phone_number = ""。

最佳答案

如果你提到的两个字段是查询参数,你可以直接这样读取:

func User(w http.ResponseWriter, r *http.Request) {
idUser := r.URL.Query().Get("id_user")
phoneNumber := r.URL.Query().Get("phone_number")
var user User
id, err := strconv.Atoi(idUser)
if err != nil {
fmt.Println("error converting string to int")
return
}
user.IDUser = id
user.PhoneNumber = phoneNumber
respBody, _ := json.Marshal(user)
w.Header().Set("Content-Type", "application/json")
w.WriteHeader(http.StatusOK)
w.Write(respBody)
}

否则你可以直接在 api payload 中传递 User struct 并直接像这样进行 payLoad 解码

    if err := json.NewDecoder(r.Body).Decode(&user); err != nil {
fmt.Println("error decoding api payload")
return
}

关于go - 如何在golang中解码查询参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47748215/

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