亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

JSON 是一個布爾省略

JSON 是一個布爾省略

Go
守候你守候我 2022-01-17 17:49:17
我在為 api 編寫 golang 庫時遇到問題。布爾值的 json 方面導致了問題。假設對于 api 調用,布爾值的默認值為 true。如果我做SomeValue bool `json:some_value,omitempty`而且我沒有通過庫設置值,該值將設置為true。如果我在庫中將該值設置為 false,則 omitempty 表示 false 值是一個空值,因此該值將通過 api 調用保持為真。讓我們去掉省略號,讓它看起來像這樣SomeValue bool `json:some_value`現在我遇到了相反的問題,我可以將值設置為 false,但如果我不設置該值,那么即使我希望它為 true,該值也會為 false。編輯:如何保持不必將值設置為 true 同時也能夠將值設置為 false 的行為?
查看完整描述

1 回答

?
忽然笑

TA貢獻1806條經驗 獲得超5個贊

使用指針


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}


查看完整回答
反對 回復 2022-01-17
  • 1 回答
  • 0 關注
  • 173 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號