演示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 引用类型后问题就可以了。

最新文章

  1. zTree的内核
  2. 优化Android Studio/Gradle构建
  3. Ffmpeg
  4. Day03_JAVA语言基础第三天
  5. Django工程读取mongodb并使用分页器
  6. 使用strace追踪多个进程
  7. C#学习笔记之结构体
  8. 如何记录selenium自动化测试过程中接口的调用信息
  9. 使用joda-time工具类 计算时间相差多少 天,小时,分钟,秒
  10. JavaScript 轮播图实例
  11. aufac在mvc中多线程
  12. Linux系统常见的压缩与打包命令
  13. GoldenGate12.3中新增的Parallel Replicat (PR)介绍
  14. C++基础知识:动态类型识别
  15. 个人理解的int数组和char数组
  16. [转].net reactor 学习系列(五)---源代码加密程序
  17. JSP中四种传递参数中文乱码问题
  18. RavenDb学习(二)简单的增删查改
  19. Python-sys模块,异常
  20. SQL行列轉換方法(詳細例子)

热门文章

  1. mysql创建存储过程造数据
  2. Centos 7 部署Kubernetes集群 (基于cri-dockerd)
  3. Unity简单使用 Addressables远端打包流程
  4. 遍历operation
  5. HBase对表增查操作 API
  6. Java06 面向对象
  7. xss-labs
  8. Array方法学习总结
  9. 调度平台&定时任务
  10. docker compose设置不同容器间通信