当前位置: 首页 > 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.dtcms.com/a/265964.html

相关文章:

  • 图论基础算法入门笔记
  • OOM电商系统订单缓存泄漏,这是泄漏还是溢出
  • 免费一键自动化申请、续期、部署、监控所有 SSL/TLS 证书,ALLinSSL开源免费的 SSL 证书自动化管理平台
  • 【进阶篇-消息队列】——RocketMQ如何实现事务的
  • HarmonyOS ArkTS卡片堆叠滑动组件实战与原理详解(含源码)
  • 如何挖掘客户的隐性需求
  • 474. 一和零
  • 【华为od刷题(C++)】HJ22 汽水瓶
  • ubuntu22 桌面版开启root登陆
  • ubuntu22.04安装anaconda
  • embbding you should know
  • 独立开发者软件出海:如何用Semrush高效洞察与增长
  • 【Note】《深入理解Linux内核》Chapter 10 :Linux 内核中的系统调用机制全解析
  • 贝叶斯深度学习:赋予AI不确定性感知的认知革命
  • 【Oracle学习笔记】8.函数(Function)
  • 湖北理元理律师事务所的债务管理方法论
  • 算法刷题打卡(1)—— 快速排序
  • 睿尔曼系列机器人——以创新驱动未来,重塑智能协作新生态(上)
  • 【python】OOP:Object-Oriented Programming
  • 数字人分身+矩阵系统聚合+碰一碰发视频: 源码搭建-支持OEM
  • AI开发平台:从技术壁垒到全民创新,AI 开发平台如何重构产业生态?
  • C++ 标准模板库算法之 transform 用法
  • STC8G 8051内核单片机开发 (中断)
  • 在 UniApp 项目中巧用开发工具与 AI 插件:全面提升开发到部署的效率
  • 【时间序列数据处理的噩梦与救赎:一次复杂数据可视化问题的深度复盘】
  • 运维服务部初级服务工程师面招聘笔试题和答案
  • PROFINET转MODBUS TCP网关在机械臂通信操作中的应用研究
  • 微信小程序——skyline版本问题
  • 2025年金融创新与计算机视觉国际会议(FICV 2025)
  • 【网络协议】WebSocket简介