开发者

omitempty在go中的使用方式

目录
  • omitempty在go中的使用
  • go标记omitempty的含义
  • 总结

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() {
    p1javascript := 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为空, 则javascript生成的json中没有addr字段。

可以去掉omitempty, 再试试。

go标记omitempty的含义

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

当字段被标记为"`omandroiditempty`"时,它表示在编码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中忽略空值字段。

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持编程客栈(www.devze.com)。

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新开发

开发排行榜