golang - 如何将字节切换转换为bool?

时间:2014-06-24 06:57:32

标签: go

我有一个数据库sql.NullBool。为了将json解组到它中,我正在编写这个小函数。我可以通过简单地转换它来将字节数组转换为字符串(字符串(数据))......对于bool来说不是这样。知道如何转换为bool吗?

type NullBool struct {
    sql.NullBool
}

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

3 个答案:

答案 0 :(得分:4)

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

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

答案 1 :(得分:4)

最简单的方法是使用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
}

答案 2 :(得分:0)

它认为简单的方法是像这样检查切片长度:

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