当前位置: 代码网 > it编程>前端脚本>Golang > omitempty在go中的使用方式

omitempty在go中的使用方式

2024年11月04日 Golang 我要评论
omitempty在go中的使用直接上代码:package main import ( "encoding/json" "fmt") type person struct { nam

omitempty在go中的使用

直接上代码:

package main
 
import (
    "encoding/json"
    "fmt"
)
 
type person struct {
    name string `json:"name"`
    age  int    `json:"age"`
    addr string `json:"addr,omitempty"`
}
 
func main() {
    p1 := person{
        name: "taoge",
        age:  30,
    }
 
    data, err := json.marshal(p1)
    if err != nil {
        panic(err)
    }
 
    fmt.printf("%s\n", data)
    fmt.println(p1.name, p1.age, p1.addr)
 
    p2 := person{
        name: "cang laoshi",
        age:  18,
        addr: "japan",
    }
 
    data2, err := json.marshal(p2)
    if err != nil {
        panic(err)
    }
 
    fmt.printf("%s\n", data2)
    
    fmt.println(p2.name, p2.age, p2.addr)
}

结果:

{"name":"taoge","age":30}
taoge 30 
{"name":"cang laoshi","age":18,"addr":"japan"}
cang laoshi 18 japan

可以看到,有了omitempty后,如果addr为空, 则生成的json中没有addr字段。

可以去掉omitempty, 再试试。

go标记omitempty的含义

"omitempty"是go语言中的一个标记,用于在编码和解码json数据时控制字段的行为。它可以应用于结构体字段的标签中。

当字段被标记为"`omitempty`"时,它表示在编码json数据时,如果该字段的值为空值,即零值或空引用,则忽略该字段,不将其包含在生成的json中。换句话说,如果字段的值为零值或空引用,则不会在json中创建对应的键值对。

这个特性对于减少生成的json大小、提高网络传输效率以及使json数据更加简洁和可读是有用的。

以下是一个示例,展示了如何在go语言的结构体字段中使用"`omitempty`"标记:

type person struct {
    name  string `json:"name"`
    age   int    `json:"age,omitempty"`
    email string `json:"email,omitempty"`
}

在上述示例中,`age`和`email`字段都被标记为`omitempty`。当将`person`结构体编码为json时,如果`age`和`email`字段的值为空值(例如,`age`为0,`email`为空字符串),则在生成的json中将不会包含这些字段。只有当它们具有非空值时,才会在json中创建对应的键值对。

总之,`omitempty`是go语言中用于在编码和解码json时控制字段行为的标记,它指示在生成的json中忽略空值字段。

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持代码网。

(0)

相关文章:

版权声明:本文内容由互联网用户贡献,该文观点仅代表作者本人。本站仅提供信息存储服务,不拥有所有权,不承担相关法律责任。 如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 2386932994@qq.com 举报,一经查实将立刻删除。

发表评论

验证码:
Copyright © 2017-2025  代码网 保留所有权利. 粤ICP备2024248653号
站长QQ:2386932994 | 联系邮箱:2386932994@qq.com