Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/image/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
JSON golang布尔值为空_Json_Go - Fatal编程技术网

JSON golang布尔值为空

JSON golang布尔值为空,json,go,Json,Go,我在为api编写golang库时遇到问题。Boolean的json特性引起了一些问题 假设对于api调用,布尔值的默认值为true 如果我这样做 SomeValue bool `json:some_value,omitempty` 我没有通过库设置值,值将设置为true。如果我在库中将该值设置为false,则ompitempty表示false值是空值,因此该值将在api调用期间保持为true 让我们把它拿出来,让它看起来像这样 SomeValue bool `json:some_value`

我在为api编写golang库时遇到问题。Boolean的json特性引起了一些问题

假设对于api调用,布尔值的默认值为true

如果我这样做

SomeValue bool `json:some_value,omitempty`
我没有通过库设置值,值将设置为true。如果我在库中将该值设置为false,则ompitempty表示false值是空值,因此该值将在api调用期间保持为true

让我们把它拿出来,让它看起来像这样

SomeValue bool `json:some_value`
现在我有了相反的问题,我可以将值设置为false,但是如果我不设置值,那么该值将为false,即使我期望它为true

编辑:如何保持不必将值设置为true,同时也可以将值设置为false的行为?

主程序包
进口(
“编码/json”
“fmt”
)
键入SomeStruct struct{
SomeValue*bool`json:“some_值,省略为空”`
}
func main(){
t:=新(布尔)
f:=新(布尔)
*t=真
*f=假
s1,z:=json.Marshal(SomeStruct{nil})
s2,z:=json.Marshal(SomeStruct{t})
s3,933;:=json.Marshal(SomeStruct{f})
格式打印项次(字符串(s1))
fmt.Println(字符串(s2))
格式打印项次(字符串(s3))
}
输出:

{}
{"some_value":true}
{"some_value":false}

等等,问题是什么?当你需要区分未设置值和零值时,使用指针。我添加了这个问题。让我知道这是否有意义@JerrybiboThat做的。谢谢@JimBIf,我不想使用任何值。如果我使用
json:“true,ommitempty”
,它会工作吗?@IFTEKHARIASIF-go的
json
标记中的第一项是您映射