第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問題,去搜搜看,總會(huì)有你想問的

將 null 分配給 JSON 字段而不是空字符串

將 null 分配給 JSON 字段而不是空字符串

Go
拉風(fēng)的咖菲貓 2021-10-18 14:21:41
由于空字符串是 Go 的零/默認(rèn)值string,因此我決定將所有此類字段定義為interface{}。例如type student struct {    FirstName  interface{} `json:"first_name"`    MiddleName interface{} `json:"middle_name"`    LastName   interface{} `json:"last_name"`}如果該特定字段的值不可用,我發(fā)送數(shù)據(jù)的應(yīng)用程序需要一個(gè) null 而不是空字符串。這是正確的方法還是有人可以指出我比這更好的方法。
查看完整描述

3 回答

?
明月笑刀無情

TA貢獻(xiàn)1828條經(jīng)驗(yàn) 獲得超4個(gè)贊

在json 包文檔中:


指針值編碼為指向的值??罩羔樉幋a為空 JSON 對象。


所以你可以存儲(chǔ)一個(gè)指向字符串的指針,如果不是 nil,它將被編碼為一個(gè)字符串,如果 nil 將被編碼為“null”


type student struct {

  FirstName  *string `json:"first_name"`

  MiddleName *string `json:"middle_name"`

  LastName   *string `json:"last_name"`

}


查看完整回答
反對 回復(fù) 2021-10-18
?
小唯快跑啊

TA貢獻(xiàn)1863條經(jīng)驗(yàn) 獲得超2個(gè)贊

另一種方法實(shí)際上是使用 golang 的 json 庫提供的 MarhshalJSON 和 UnmarshalJSON 接口方法的解決方法。代碼如下:


type MyType string

type MyStruct struct {

    A MyType `json:"my_type"`

}


func (c MyType) MarshalJSON() ([]byte, error) {

    var buf bytes.Buffer

    if len(string(c)) == 0 {

        buf.WriteString(`null`)

    } else {

        buf.WriteString(`"` + string(c) + `"`)   // add double quation mark as json format required

    }

    return buf.Bytes(), nil

}


func (c *MyType)UnmarshalJSON(in []byte) error {

    str := string(in)

    if str == `null` {

        *c = ""

        return nil

    }

    res := MyType(str)

    if len(res) >= 2 {

        res = res[1:len(res)-1]     // remove the wrapped qutation

    }

    *c = res

    return nil

}

那么當(dāng)使用 json.Marshal 時(shí),MyType 值將被編組為 null。


查看完整回答
反對 回復(fù) 2021-10-18
  • 3 回答
  • 0 關(guān)注
  • 218 瀏覽

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號