我在為 api 編寫 golang 庫時(shí)遇到問題。布爾值的 json 方面導(dǎo)致了問題。假設(shè)對(duì)于 api 調(diào)用,布爾值的默認(rèn)值為 true。如果我做SomeValue bool `json:some_value,omitempty`而且我沒有通過庫設(shè)置值,該值將設(shè)置為true。如果我在庫中將該值設(shè)置為 false,則 omitempty 表示 false 值是一個(gè)空值,因此該值將通過 api 調(diào)用保持為真。讓我們?nèi)サ羰÷蕴?hào),讓它看起來像這樣SomeValue bool `json:some_value`現(xiàn)在我遇到了相反的問題,我可以將值設(shè)置為 false,但如果我不設(shè)置該值,那么即使我希望它為 true,該值也會(huì)為 false。編輯:如何保持不必將值設(shè)置為 true 同時(shí)也能夠?qū)⒅翟O(shè)置為 false 的行為?
1 回答

忽然笑
TA貢獻(xiàn)1806條經(jīng)驗(yàn) 獲得超5個(gè)贊
使用指針
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))
}
輸出:
{}
{"some_value":true}
{"some_value":false}
- 1 回答
- 0 關(guān)注
- 170 瀏覽
添加回答
舉報(bào)
0/150
提交
取消