golang中struct转json后键名首字母大小写问题解决

本文主要介绍一下structjson后键名首字母大小写的问题

1、结构体里的字段首字母必须大写,否则无法正常解析

例:

type Person struct {

   Name string      //Name字段首字母大写

   age int                      //age字段首字母小写

}

 

func main() {

  person:=Person{"小明",18}

  if result,err:=json.Marshal(&person);err==nil{

    fmt.Println(string(result))

  }

}

 

控制台输出:{"Name":"小明"}

从上面代码可以看出如果结构体的字段首字母小写,该字段将无法正常解析

 

2、如果我们想让structjson后的首字母小写,我们可以通过字段的tag指定

 

未指定tag

type Person  struct{

     Name  string

     Age    int               

}

func main(){

  person:=Person{"小明",18}

  if result,err:=json.Marshal(&person);err==nil{

    fmt.Println(string(result))

  }

}

控制台输出:{"Name":"小明","Age":18}

 

 

指定字段的tag,实现json字符串的首字母小写

type Person  struct{

     Name  string   `json:"name"`    

     Age    int        `json:"age"`

            Time int64    `json:"-"`              // 直接忽略字段

}

func main(){

  person:=Person{"小明",18, time.Now().Unix()}

  if result,err:=json.Marshal(&person);err==nil{

   fmt.Println(string(result))

  }

}

控制台输出:{"name":"小明","age":18}

   

你可能感兴趣的:(Golang基础)