golang - 如何将字节切片转换为布尔值?

3

我有一个数据库 sql.NullBool。为了将json反序列化到其中,我编写了这个小函数。我可以通过简单地进行转换(string(data))将字节数组转换为字符串...但是对于布尔值不行。你有什么想法可以将其转换为布尔值吗?

type NullBool struct {
    sql.NullBool
}

func (b *NullBool) UnmarshalJSON(data []byte) error {
  b.Bool = bool(data) //BREAKS!! 
  b.Valid = true
  return nil
}
3个回答

9
最简单的方法是使用 strconv.ParseBool 包。像这样:
func (b *NullBool) UnmarshalJSON(data []byte) error {
    var err error
    b.Bool, err = strconv.ParseBool(string(data))
    b.Valid = (err == nil)
    return err
}

4

您可以几乎直接使用json模块。

func (nb *NullBool) UnmarshalJSON(data []byte) error {
    err := json.Unmarshal(data, &nb.Bool)
    nb.Valid = (err == nil)
    return err
}

0

我认为简单的方法是检查切片长度,如下所示:

b := []byte("data")
isByteSliceValid := len(b) != 0

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接