首页 > go json 字符串转struct时 如何判断 bool类型的字段是否存在?

go json 字符串转struct时 如何判断 bool类型的字段是否存在?

go json 字符串转struct时 如何判断 bool类型的字段是否存在 omitempty貌似对bool类型是无效的?


可以把struct中的bool类型改为指针类型 *bool,这样如果不存在这个字段,那么就是nil,否则就是存在,取出值即可


go 初始struct对象的时候是默认初始化里边的字段的。这意味着你不能根据json 中bool字段的存在来对应影响生成的struct对象。要不你把json的bool字段换成默认的go语义为空的数据类型,比如 string。或者你override go中转换struct对象的方法。

Go and JSON


type Month struct {
    MonthNumber int
    YearNumber int
}

func (m Month) MarshalJSON() ([]byte, error){
    return []byte(fmt.Sprintf("%d/%d", m.MonthNumber, m.YearNumber)), nil
}

func (m *Month) UnmarshalJSON(value []byte) error {
    parts := strings.Split(string(value), "/")
    m.MonthNumber = strconv.ParseInt(parts[0], 10, 32)
    m.YearNumber = strconv.ParseInt(parts[1], 10, 32)

    return nil
}
【热门文章】
【热门文章】