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,但其他类型的数据,所以“在一起”的意思是关于如何定义这种类型的对象,如果它是一个字符串,然后“添加”意味着“连接”。

温馨提示:答案为网友推荐,仅供参考
第1个回答  推荐于2018-02-28

为空则不输出


比如:

package main

import (
       "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)

}

本回答被提问者和网友采纳
第2个回答  2019-04-19
“将内容marshal成[]byte时,对标记有omitempyt的值加以判断,如果为空,则忽略该值(即空值不会出现在结果数组中)。”
这只是在marshal的时候才有效的标记,因为在decode源码中找不到它。 (^_^)