作者热门文章
- xml - AJAX/Jquery XML 解析
- 具有多重继承的 XML 模式
- .net - 枚举序列化 Json 与 XML
- XML 简单类型、简单内容、复杂类型、复杂内容
我有参数
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/
我是一名优秀的程序员,十分优秀!