话不多说,先上代码
package main
import (
"encoding/json"
"fmt"
)
type Person struct {
Name string `json:"name"`
Age int `json:"age"`
Addr string `json:"addr,omitempty"`
Tab bool `json:"-"`
}
func main() {
p1 := Person{
Name: "Jack",
Age: 22,
Tab: false,
}
data1, err := json.Marshal(p1)
if err != nil {
panic(err)
}
fmt.Printf("%s\n", data1)
// ================
p2 := Person{
Name: "Jack",
Age: 22,
Addr: "cjs",
Tab: true,
}
data2, err := json.Marshal(p2)
if err != nil {
panic(err)
}
// p2 则会打印所有
fmt.Printf("%s\n", data2)
}
结果
{"name":"Jack","age":22}
{"name":"Jack","age":22,"addr":"cjs"}
说明
当结构体中某个字段后面带有
json:"**,omitempty"
**为你设定的名字,omitempty表示如果该值为空,则不进行编码。
若为int型,则为0的时候,不被编码;若为string、切片等指针类型的,则为nil的时候,不被编码;若为bool型,则为false的时候,不被编码。
当结构体中某个字段后面带有
json:"-"
将直接忽略,不进行编码。
在一种方法,直接以小写字母开头,这样的话是不被导出的,也不会被编码。
参考链接
go json 转换忽略字段、控制字段可有可无
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)