golang json使用10、-10、0表示,true、false、null
package main import ( "encoding/json" "errors" "fmt" ) type A struct { Br Boolean `json:"br"` } func main() { var c A json.Unmarshal([]byte(`{"br":"true"}`), &c) fmt.Println(c) } type Boolean int const ( isTrue = 10 isFalse = -10 isNull = 0 ) func (b Boolean) MarshalJSON() (by []byte, err error) { switch b { case isTrue: by = []byte("true") case isFalse: by = []byte("false") default: by = []byte("null") } return } func (b *Boolean) UnmarshalJSON(data []byte) error { switch string(data) { case `1`, `t`, `T`, `true`, `TRUE`, `True`, `"1"`, `"t"`, `"T"`, `"true"`, `"TRUE"`, `"True"`: *b = isTrue case `0`, `f`, `F`, `false`, `FALSE`, `False`, `"0"`, `"f"`, `"F"`, `"false"`, `"FALSE"`, `"False"`: *b = isFalse case `null`: *b = isNull default: return errors.New("不是正确类型") } return nil } func (b Boolean) IsNull() bool { return b == isNull } func (b Boolean) IsBool() bool { return b == isTrue }
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· winform 绘制太阳,地球,月球 运作规律
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· AI与.NET技术实操系列(五):向量存储与相似性搜索在 .NET 中的实现
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人