gpt4 book ai didi

json - 如何从 JSON 中将 0 和 false 解码为 bool

转载 作者:IT王子 更新时间:2023-10-29 01:11:00 26 4
gpt4 key购买 nike

目前正在映射一个服务的输出,可以说,它的 bool 类型自由地交换 0 和 false(以及 1 和 true)。有没有办法对内置的编码/json 解码函数使用更宽松的解析器?我试过在 json 标签中添加 ,string 无济于事。

我想要的示例:

type MyType struct {
AsBoolean bool `json:"field1"`
AlsoBoolean bool `json:"field2"`
}

然后,给定输入json:

{
"field1" : true,
"field2" : 1
}

结果结构将是:

obj := MyType{}
json_err := json.Unmarshal([]byte(input_json), &obj)
fmt.Printf("%v\n", obj.AsBoolean) //"true"
fmt.Printf("%v\n", obj.AlsoBoolean) //"true"

最佳答案

谢谢 Will Charzuck 的回答,但是,它对我不起作用,除非我使用指针方法接收器,并在函数体中设置指针的值。

type ConvertibleBoolean bool

func (bit *ConvertibleBoolean) UnmarshalJSON(data []byte) error {
asString := string(data)
if asString == "1" || asString == "true" {
*bit = true
} else if asString == "0" || asString == "false" {
*bit = false
} else {
return errors.New(fmt.Sprintf("Boolean unmarshal error: invalid input %s", asString))
}
return nil
}

关于json - 如何从 JSON 中将 0 和 false 解码为 bool,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30856454/

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