英文:
golang json 'true' is no True?
问题
我正在学习Golang,关于JSON到结构体的转换,获取布尔值始终为false,如果我的JSON中的"remember"字段为true,如何解决?以下是你的代码:
package main
import (
"encoding/json"
"fmt"
)
type AdminInfoRequest struct {
Id uint `json:"id"`
UserName string `json:"username"`
Password string `json:"password"`
CaptchaId string `json:"captcha_id"`
Captcha string `json:"captcha"`
Remember bool `json:"remember"`
Status uint `json:"status"`
GroupId uint `json:"group_id"`
OldPassword string `json:"old_password"`
RePassword string `json:"re_password"`
}
func main() {
var s AdminInfoRequest
j := `{"username":"admin","remember":"true"}`
json.Unmarshal([]byte(j), &s)
fmt.Println(s.UserName)
fmt.Println(s.Remember)
}
你的代码中,Remember
字段的类型是bool
,但是你的JSON中的"remember"字段的值是字符串类型的"true"。这会导致json.Unmarshal
函数无法正确解析该字段。要解决这个问题,你可以将JSON中的"remember"字段的值改为布尔类型的true,而不是字符串类型的"true"。修改后的代码如下:
package main
import (
"encoding/json"
"fmt"
)
type AdminInfoRequest struct {
Id uint `json:"id"`
UserName string `json:"username"`
Password string `json:"password"`
CaptchaId string `json:"captcha_id"`
Captcha string `json:"captcha"`
Remember bool `json:"remember"`
Status uint `json:"status"`
GroupId uint `json:"group_id"`
OldPassword string `json:"old_password"`
RePassword string `json:"re_password"`
}
func main() {
var s AdminInfoRequest
j := `{"username":"admin","remember":true}`
json.Unmarshal([]byte(j), &s)
fmt.Println(s.UserName)
fmt.Println(s.Remember)
}
这样修改后,你将能够正确地获取到布尔值true。
英文:
I am just learning golang, json to struct,Get boolean value is always false,
if my json "remember":true, get boolean value is true,how to solve?
my code
package main
import (
"encoding/json"
"fmt"
)
type AdminInfoRequest struct {
Id uint `json:"id"`
UserName string `json:"username"`
Password string `json:"password"`
CaptchaId string `json:"captcha_id"`
Captcha string `json:"captcha"`
Remember bool `json:"remember"`
Status uint `json:"status"`
GroupId uint `json:"group_id"`
OldPassword string `json:"old_password"`
RePassword string `json:"re_password"`
}
func main() {
var s AdminInfoRequest
j := `{"username":"admin","remember":"true"}`
json.Unmarshal([]byte(j), &s)
fmt.Println(s.UserName)
fmt.Println(s.Remember)
}
答案1
得分: 3
在JSON中,"true"
是一个字符串值。尝试这样写:
j := `{"username":"admin","remember":true}`
英文:
In JSON, "true"
is a string value. Try this:
j := `{"username":"admin","remember":true}`
通过集体智慧和协作来改善编程学习和解决问题的方式。致力于成为全球开发者共同参与的知识库,让每个人都能够通过互相帮助和分享经验来进步。
评论