首页 > 编程语言 > 详细

Go语言结构体转json的坑

时间:2019-03-22 14:38:31      阅读:140      评论:0      收藏:0      [点我收藏+]

Go语言结构体转json的坑

标签(空格分隔): go

json.Marshal()

JSON输出的时候必须注意,只有导出的字段(首字母是大写)才会被输出,如果修改字段名,那么就会发现什么都不会输出,所以必须通过struct tag定义来实现。

针对JSON的输出,我们在定义struct tag的时候需要注意的几点是:

 - 字段的tag是"-",那么这个字段不会输出到JSON
 - tag中带有自定义名称,那么这个自定义名称会出现在JSON的字段名中
 - tag中如果带有"omitempty"选项,那么如果该字段值为空,就不会输出到JSON串中
 - 如果字段类型是bool, string, int, int64等,而tag中带有",string"选项,那么这个字段在输出到JSON的时候会把该字段对应的值转换成JSON字符串

代码示例

package main

import (
    "encoding/json"
    "fmt"
)

func main() {

type UserInfo struct {
    Id int
    Name string
    Address string
}

type Comiket struct {
    id int
    title string
}

type Test struct {
    Id int `json:"-"`
    Content string `json:"content"`
    IsDel bool `json:",string"`
    Type int `json:"type, omitempty"`
}

c := Comiket{1, "AS动漫游戏嘉年华"}
v, error := json.Marshal(c)
fmt.Println(string(v))
fmt.Println(error)
fmt.Println("------------------")

User := UserInfo{1, "taylor", "USA"}
b, err := json.Marshal(User)
fmt.Println(string(b))
fmt.Println(err)
fmt.Println("------------------")

t := Test{Id:1, Content:"hello world", IsDel:true}
val, _ := json.Marshal(t)
fmt.Println(string(val))

}

技术分享图片

Go语言结构体转json的坑

原文:https://www.cnblogs.com/yanweifeng/p/10578000.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!