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

golang json化时允许赋予默认值的更多相关文章

  1. java 反射: 当Timestamp类型的属性值为null时,设置默认值

    import java.beans.PropertyDescriptor; import java.lang.reflect.Field; import java.lang.reflect.Metho ...

  2. 简写代码:当变量为false时['',false,null,undefined,0,NaN]时,返回默认值

    当变量为'',false,null,undefined,0,NaN时,返回默认值 var a='' a || 'hello world'   "hello world" var a ...

  3. hibernate 插入数据时让数据库默认值生效

    用hibernate做数据库插入操作时,在数据库端已经设置了对应列的默认值,但插入的数据一直为null.查找资料发现,原来是hibernate的配置项在作怪. Hibernate允许我们在映射文件里控 ...

  4. Python中定义函数时参数有默认值的小陷阱

    在定义函数的时候,如果函数的参数有默认值,有两种类型的参数,一种是整数,字符串这种不可变类型,另一种是列表这种可变类型,对于第一种情况没有什么特殊的地方,但是对于可变类型,有一个微妙的小陷阱. 可变类 ...

  5. java字符串转换数值类型出现异常赋予默认值

    http://blog.csdn.net/w47_csdn/article/details/77855126 可以自定义工具方法,例如: public static int parseInt(Stri ...

  6. Jackson将对象转换为json字符串时,设置默认的时间格式

    maven需要的依赖: <dependency> <groupId>com.fasterxml.jackson.core</groupId> <artifac ...

  7. C#里XML(JSON)序列化时,自动隐藏值为Null的成员的输出

    从StackOverflow里找到的答案.发现对最新的Newtownsoft的JSON序列化也同样适用. https://stackoverflow.com/questions/5818513/xml ...

  8. 66、fastJson 解析json数据时,如果key值不同怎么处理?

    在某些场景,你可能需要定制序列化输出,比如说,希望序列化采用之后采用"ID",而不是"id",你可以使用@JSONField这个Annotation. publ ...

  9. jackson set properties to default value (取消让jackson 赋予默认值)

    you can define it with Integer rather than int or long. define it with a package type. jackson wont' ...

  10. JS 保存表单默认值 为空时自动填充默认值

    var inputArray = document.getElementsByTagName("input"); var strArray = []; ; i < input ...

随机推荐

  1. Kubernetes--Pod对象的生命周期

    Pod对象自从其创建开始至其终止退出的时间范围称为其生命周期.在这段时间中,Pod会处于多种不同的状态,并执行一些操作:其中,创建主容器(main container)为必需的操作,其他可选的操作还包 ...

  2. php 常用助手函数

    1 <?php 2 3 if (!function_exists('bcSum')) { 4 function bcSum($scale, ...$args): string 5 { 6 $re ...

  3. [WSL-1-Ubuntu]使用oh-my-zsh美化你的WSL(附脚本)

    在腾讯云买的那个1c2g的服务器,想用mycat搭建一个mysql cluser,用docker部署了一主一从内存就没了一半,可一主一从没啥作用,起码也得2主2从吧?而且还有HA呢,但内存和钱包不给力 ...

  4. 20_webpack_shimming预支全局变量和css的抽离

    shimming是什么 shimming 是一个概念,是某一些功能的统称 shimming(垫片),给我们的代码填充一些垫片来处理一些问题 比如我们现在以来一个第三方的库,这个第三方的库本身依赖lod ...

  5. OM6621P系列国产M4F内核低功耗BLE5.1 SoC蓝牙芯片

    随着5G与物联网时代到来,智慧城市.电动出行.智能家居.可穿戴设备等应用高速发展,低功耗蓝牙技术在近几年智能化浪潮中的地位也尤为重要.OM6621P系列的开发即是为解决国内低功耗蓝牙应用设计需求,其主 ...

  6. 树莓派,脚本遍历当前目录下视频文件,并用omxplayer播放

    事先准备好视频文件,文件名内包含视频尺寸信息,以方便构造 --win "x1 y1 x2 y2" 字符串. 通过 omxplayer  -i  filename   可查看视频尺寸 ...

  7. MyBatis_07(动态SQL)

    动态SQL: Mybatis框架的动态SQL技术是一种根据特定条件动态拼装SQL语句的功能, 它存在的意义是:"为了解决拼接SQL语句字符串时的痛点问题". 一.If if标签可通 ...

  8. 查看oracle死锁

    select A.sid, b.serial#, decode(A.type, 'MR', 'Media Recovery', 'RT','Redo Thread', 'UN','User Name' ...

  9. A、创建模式(5种)

    设计模式的分类总体来说设计模式分为三大类: 创建型模式,共五种:工厂方法模式.抽象工厂模式.单例模式.建造者模式.原型模式. 结构型模式,共七种:适配器模式.装饰器模式.代理模式.外观模式.桥接模式. ...

  10. 网线接口调试,Android ADB网络调试!

    ADB网络调试,网线接口调试    没有USB接口,照样可以调试,可通过网线接口调试步骤! 一.第一步连接WIFI  查看wifi 的IP  win+R 键 打开运行 ,输入cmd   二.输入ipc ...