golang json omitempty是啥意思
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了golang json omitempty是啥意思相关的知识,希望对你有一定的参考价值。
为空则不输出
比如:
packagemain
导入(
“编码/json”
“FMT”
)
项目结构类型{
Name字符串'json:"Name"'
Url字符串'json:'"Url"
json:"Docs,omitempty'"
}
函数main(){
P1:Project={
名称:“CleverGo高性能框架”
Url:“https://github.com/headwindfly/clevergo”,
}
err:=json。元帅(p1)
如果犯错!=nil{
恐慌(err)
}
//P1没有DU给Docs赋值,所以当zhi打印出来的时候,Docs的字段不会出现
FMT。Printf("%s\n",data)
P2:Project={
名称:“CleverGo高性能框架”
Url:“https://github.com/headwindfly/clevergo”,
医生:“https://github.com/headwindfly/clevergo/tree/master/docs”,
}
Data2,err:=json。元帅(p2)
如果犯错!=nil{
恐慌(err)
}
//P2将打印dao并打印所有
FMT。Printf("%s\n",data2)
扩展资料:
注意事项:
system.out。println将在输出之前计算传递的参数,然后调用操作结果对象的toString()方法,即在输出之前将操作结果转换为字符串。
例如如果您编写System。出去了。Println(a+b+c),这个程序实际上是ABC先做了“加法”操作,如果ABC是int,那么“together”就是sum,所以是System。
println(a+b+c)输出是ABC的总和的字符串,如果a=1,b=2,c=3的输出是6,但如果ABC不是int,但其他类型的数据,所以“在一起”的意思是关于如何定义这种类型的对象,如果它是一个字符串,然后“添加”意味着“连接”。
参考技术A为空则不输出
比如:
package mainimport (
"encoding/json"
"fmt"
)
type Project struct
Name string `json:"name"`
Url string `json:"url"`
Docs string `json:"docs,omitempty"`
func main()
p1 := Project
Name:"CleverGo高性能框架",
Url:"https://github.com/headwindfly/clevergo",
data, err := json.Marshal(p1)
if err != nil
panic(err)
// p1 没有为Docs赋值,这里打印出来不会出现Docs的字段
fmt.Printf("%s\\n", data)
p2 := Project
Name:"CleverGo高性能框架",
Url:"https://github.com/headwindfly/clevergo",
Docs:"https://github.com/headwindfly/clevergo/tree/master/docs",
data2, err := json.Marshal(p2)
if err != nil
panic(err)
// p2 则会打印所有
fmt.Printf("%s\\n", data2)
本回答被提问者和网友采纳 参考技术B “将内容marshal成[]byte时,对标记有omitempyt的值加以判断,如果为空,则忽略该值(即空值不会出现在结果数组中)。”
这只是在marshal的时候才有效的标记,因为在decode源码中找不到它。 (^_^)
golang:omitempty用法
在struct转json时,omitempty字段的值如果是该字段类型的零值,则忽略该字段。
例:
package main
import "fmt"
import "encoding/json"
type User struct {
Name string `json:"name"`
Age int `json:"age,omitempty"`
}
func main() {
u := User{
Name: "abc",
Age: 10,
}
bytes, _ := json.Marshal(&u)
fmt.Println(string(bytes))
//
u = User{
Name: "def",
}
bytes, _ = json.Marshal(&u)
fmt.Println(string(bytes))
}
执行结果:
{"name":"abc","age":10}
{"name":"def"}
以上是关于golang json omitempty是啥意思的主要内容,如果未能解决你的问题,请参考以下文章
Protocol Buffer 去除 json omitempty