Golang JSON Tag

Golang大约 1121 字

Tag

  • omitempty:空值、nil、数组或集合长度为0时,忽略该字段。
  • -:破折号,忽略该字段。
  • -,:将字段名改为-
  • ,string:将int类型字段转为string类型。

代码

定义结构体,其中R1为常规tag

R2中:(注意返回字段的大小写)

  • code,string:将int类型的Code转为string类型的code
  • ,string:将Code2转为stringCode2
  • msg,omitempty:当Msgnil""时,忽略该字段,反之返回msg字段;
  • ,omitempty: 当Datanil等情况时,忽略该字段,反之返回Data字段;
  • -:忽略该字段;
  • -,:将字段名改为-
type (
    R1 struct {
        Code int `json:"code"`
        Msg string `json:"msg"`
        Data interface{} `json:"data"`
    }

    R2 struct {
        Code int `json:"code,string"`
        Code2 int `json:",string"`
        Msg string `json:"msg,omitempty"`
        Data interface{} `json:",omitempty"`
        Data2 interface{} `json:",omitempty"`
        Id int `json:"-"`
        Id2 int `json:"-,"`
    }
)

func main() {
    r1, _ := json.Marshal(R1{Code: 0, Msg: "请求成功", Data: "字符串数据"})
    fmt.Println(string(r1)) // {"code":0,"msg":"请求成功","data":"字符串数据"}

    r2, _ := json.Marshal(R2{Code: 0, Msg: "", Data: "字符串数据", Data2: nil, Code2: 999, Id: 1000, Id2:2000})
    fmt.Println(string(r2)) // {"code":"0","Code2":"999","Data":"字符串数据","-":2000}
}

参考

https://golang.org/pkg/encoding/json/#Marshal

阅读 38 · 发布于 2020-11-03

————        END        ————

扫描下方二维码关注公众号和小程序↓↓↓

昵称:
随便看看换一批