我在为api编写golang库时遇到问题.布林的json方面正在引发问题.
假设对于api调用,布尔值的默认值为true.
如果我做
SomeValue bool `json:some_value,omitempty`
Run Code Online (Sandbox Code Playgroud)
并且我没有通过库设置值,该值将设置为true.如果我在库中将值设置为false,则omitempty表示false值为空值,因此值将通过api调用保持为true.
让我们拿出omitempty,让它看起来像这样
SomeValue bool `json:some_value`
Run Code Online (Sandbox Code Playgroud)
现在我有相反的问题,我可以将值设置为false,但如果我没有设置值,那么即使我希望它是真的,该值也将为false.
编辑:如何保持不必将值设置为true的行为,同时还能将值设置为false?
gav*_*avv 36
package main
import (
"encoding/json"
"fmt"
)
type SomeStruct struct {
SomeValue *bool `json:"some_value,omitempty"`
}
func main() {
t := new(bool)
f := new(bool)
*t = true
*f = false
s1, _ := json.Marshal(SomeStruct{nil})
s2, _ := json.Marshal(SomeStruct{t})
s3, _ := json.Marshal(SomeStruct{f})
fmt.Println(string(s1))
fmt.Println(string(s2))
fmt.Println(string(s3))
}
Run Code Online (Sandbox Code Playgroud)
输出:
{}
{"some_value":true}
{"some_value":false}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
11228 次 |
| 最近记录: |