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