作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在使用具有json值的API,该json值可以是数字或字符串,有时可以是空字符串。例如:
[
{
"Description": "Doorknob",
"Amount": 3.25
},
{
"Description": "Light bulb",
"Amount": "4.70"
},
{
"Description": "Screwdriver",
"Amount": ""
}
]
我知道我可以使用json.Number来处理值可以是数字或字符串的情况。但是,如何处理空字符串呢?
null
形式显示,并且我认为sql.NullFloat64最适合处理它。
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
}
这是我应该使用开放式界面支付金额的情况吗?
最佳答案
你快到了!给json.Unmarshal
一个空字符串时,json.Number
调用错误。
预先添加此检查:
// 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
关于json - 用sql.NullFloat64包装json.Number,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63872248/
我是一名优秀的程序员,十分优秀!