当前位置: 首页 > news >正文

golang json omitempty 标签研究

今天遇到一个奇怪的情况,我结构体的一个字段明明用了omitempty 标签,但是返回json的时候却还是显示了出来。

type Result struct {Status string `json:"status"`Data   Data   `json:"data,omitempty"`
}
type Data struct {Aa string      `json:"aa"`Bb []BbDetails `json:"Bb"`
}
type BbDetails struct {
}func main() {aa := []interface{}{}cc := Result{Status: "aa",}aa = append(aa, cc)jsonStr, _ := jsoniter.Marshal(aa)fmt.Println(string(jsonStr))
}

在这里插入图片描述
这里可以看到明明data没有赋值,同时也用了omitempty标签,但是还是被打印出来了。
然后把

type Data struct {Aa string      `json:"aa"`Bb []BbDetails `json:"Bb"`
}

改为

type Data struct {Aa string      `json:"aa,omitempty"`Bb []BbDetails `json:"Bb,omitempty"`
}

就可以了
在这里插入图片描述
原因:
首先data无论是否有omitempty 标签都会显示,说明空结构体其实在序列化的时候并不会被认为是空值,所以不会被忽略。然后因为空结构体不会被忽略,所以结构体里面的字段不加omitempty的话肯定会显示。

http://www.lryc.cn/news/579600.html

相关文章:

  • 服务器如何配置防火墙规则开放/关闭端口?
  • 数据库运维指导书
  • 74. 搜索二维矩阵
  • WPS 如何使用宏录制功能
  • Web 服务器架构选择深度解析
  • 【字节跳动】数据挖掘面试题0006:SVM(支持向量机)详细原理
  • LiteHub中间件之跨域访问CORS
  • 【ArcGISPro】基于Pro的Python环境进行Django简单开发Web
  • 队列和栈数据结构
  • RabbitMQ 高级特性之发送方确认
  • NV133NV137美光固态闪存NV147NV148
  • c++中的绑定器
  • 在Linux服务器上使用kvm创建虚拟机
  • 国内MCP服务平台推荐!aibase.cn上线MCP服务器集合平台
  • 儿童几岁开始可以使用益智玩具?
  • 解决python报not found libzbar-64.dll的问题
  • 基于 SpringBoot+Vue.js+ElementUI 的 “花开富贵“ 花园管理系统设计与实现7000字论文
  • 基于Hadoop的餐饮大数据分析系统的设计与实现
  • 刷卡登入数据获取
  • 纯前端批量下载
  • CPT204-Advanced OO Programming: Sorting排序
  • 扣子空间PPT生产力升级:AI智能生成与多模态创作新时代
  • JS模块导出导入笔记 —— 默认导出 具名导出
  • 行波进位加法器 (Carry-Propagate Adder)
  • UE5 瞄准偏移(AimOffset)功能详解
  • 独立开发者软件出海:如何用Semrush高效洞察与增长
  • RJ45 连接器(水晶头)的引脚定义
  • 贪心专题练习
  • 强实时运动控制内核MotionRT750(一):驱动安装、内核配置与使用
  • 马斯克脑机接口(Neuralink)技术进展,已经实现瘫痪患者通过BCI控制电脑、玩视频游戏、学习编程,未来盲人也能恢复视力了