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

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

用 sql.NullFloat64 包裝 json.Number

用 sql.NullFloat64 包裝 json.Number

Go
一只斗牛犬 2022-06-27 17:02:56
我正在使用具有 json 值的 API,該值可以是數(shù)字或字符串,有時(shí)可以是空字符串。例如:[    {        "Description": "Doorknob",        "Amount": 3.25    },    {        "Description": "Light bulb",        "Amount": "4.70"    },    {        "Description": "Screwdriver",        "Amount": ""    }]我了解到我可以使用 json.Number 來處理值可以是數(shù)字或字符串的情況。但是我該如何處理它是一個(gè)空字符串的情況呢?我需要將這些值插入到 postgres 數(shù)據(jù)庫中,所以我希望它是一個(gè)空字符串來顯示,null并且我認(rèn)為 sql.NullFloat64 最適合處理它。這是我正在使用的一個(gè)功能,它適用于前兩種情況(門把手和燈泡),但無法解開最后一種情況(“螺絲刀”)。這是我正在嘗試使用的解組函數(shù),但我不知道為什么它不起作用:type NullNumber struct{ sql.NullFloat64 }func (nn *NullNumber) UnmarshalJSON(data []byte) error {    var x *json.Number    if err := json.Unmarshal(data, &x); err != nil {        return err    }    if len(*x) == 0 {        nn.Valid = false // This doesn't seem to be working. Why?    }    this, err := x.Float64()    if err != nil {        return err    }    nn.Valid = true    nn.Float64 = this    return nil}這是我應(yīng)該為金額使用開放接口的情況嗎?非常感謝任何幫助。操場(chǎng): https: //play.golang.org/p/QYQRq94OtV3
查看完整描述

1 回答

?
藍(lán)山帝景

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

您快到了!當(dāng)給定一個(gè)空字符串json.Unmarshal時(shí)調(diào)用錯(cuò)誤。json.Number


預(yù)先添加此檢查:


// edge case: json.Number is given an empty string

if bytes.Equal(data, []byte(`""`)) {

    nn.Valid = false

    return nil

}

https://play.golang.org/p/ILxC8tjYI_G


查看完整回答
反對(duì) 回復(fù) 2022-06-27
  • 1 回答
  • 0 關(guān)注
  • 128 瀏覽
慕課專欄
更多

添加回答

舉報(bào)

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號(hào)

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