zoukankan      html  css  js  c++  java
  • go omitempty 忽略类型

    nil

    false

    0

    每个结构字段的编码可以通过结构字段标签中“json”键下存储的格式字符串来定制。格式字符串给出字段的名称,可能后跟逗号分隔的选项列表。名称可能为空,以指定选项而不覆盖默认字段名称。

    “omitempty”选项指定如果字段具有空值,定义为false,0,零指针,nil接口值以及任何空数组,切片,映射或字符串,则该字段应从编码中省略。

    作为特殊情况,如果字段标签是“ - ”,则该字段总是被省略。请注意,名称为“ - ”的字段仍然可以使用标签“ - ,”生成。


    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 ", 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 ", 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字段。
    ---------------------

  • 相关阅读:
    [bzoj4239]巴士走读
    [bzoj1146]网络管理
    [luogu3292]幸运数字
    [51nod1597]有限背包计数问题
    [bzoj2654]tree
    [bzoj2668]交换棋子
    [bzoj3173]最长上升子序列
    [hdu6715]算术
    [bzoj3784]树上的路径
    [bzoj1221]软件开发
  • 原文地址:https://www.cnblogs.com/mafeng/p/10144494.html
Copyright © 2011-2022 走看看