golang json化时允许赋予默认值
2024-09-18 22:31:07
演示omitempty 代码:
package main
import (
"encoding/json"
"fmt"
)
func main() {
type Hobby struct {
Movie string `json:"movie,omitempty" bson:"movie"`
BasketballTeam string `json:"basketball_team,omitempty" bson:"basketball_team"`
}
type Person struct {
Name string `json:"name,omitempty" bson:"name"`
Level int `json:"level,omitempty" bson:"level"`
Hobby Hobby `json:"hobby,omitempty" bson:"hobby"`
}
var coder Person
var level int = 0
coder.Level = level
coder.Name = "mike"
bytes, _ := json.Marshal(coder)
fmt.Printf("%s\n", string(bytes))
// 打印为:{"name":"mike","hobby":{}}
return
}
我们发现给Level 字段赋值了0,但是json字符串化后打印, level字段没有了。反而是没有赋值的Hobby字段出现了。当实际应用时level可以为0,而Hobby 如果没有赋值时字符串中不需要出现。 如何解决情况?
示例代码:
package main
import (
"encoding/json"
"fmt"
)
func main() {
type Hobby struct {
Movie string `json:"movie,omitempty" bson:"movie"`
BasketballTeam string `json:"basketball_team,omitempty" bson:"basketball_team"`
}
type Person struct {
Name string `json:"name,omitempty" bson:"name"`
Level *int `json:"level,omitempty" bson:"level"`
Hobby *Hobby `json:"hobby,omitempty" bson:"hobby"`
}
var coder Person
var level int = 0
coder.Level = &level
coder.Name = "mike"
bytes, _ := json.Marshal(coder)
fmt.Printf("%s\n", string(bytes))
// 打印 {"name":"mike","level":0}
return
}
指定 Level 、Hobby 引用类型后问题就可以了。
最新文章
- zTree的内核
- 优化Android Studio/Gradle构建
- Ffmpeg
- Day03_JAVA语言基础第三天
- Django工程读取mongodb并使用分页器
- 使用strace追踪多个进程
- C#学习笔记之结构体
- 如何记录selenium自动化测试过程中接口的调用信息
- 使用joda-time工具类 计算时间相差多少 天,小时,分钟,秒
- JavaScript 轮播图实例
- aufac在mvc中多线程
- Linux系统常见的压缩与打包命令
- GoldenGate12.3中新增的Parallel Replicat (PR)介绍
- C++基础知识:动态类型识别
- 个人理解的int数组和char数组
- [转].net reactor 学习系列(五)---源代码加密程序
- JSP中四种传递参数中文乱码问题
- RavenDb学习(二)简单的增删查改
- Python-sys模块,异常
- SQL行列轉換方法(詳細例子)