go中结构体与json的格式转换

本文介绍了Go语言中如何进行结构体与JSON之间的转换。首先展示了如何将结构体转换为JSON,接着演示了从JSON反序列化到结构体的过程。同时,还讨论了结构体标签在解码和编码时的作用,以匹配字段名。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

基于简单结构体的处理,结构体的嵌套类似

type User struct {

    UserName string 
    PassWord string 
}

1)结构体->json

    user := User{
        UserName: "tyming",
        PassWord: "1234567890",//这里逗号不能少
    }
    //json.Marshal() 编写为json格式
    str, _ := json.Marshal(user)
    fmt.Printf("%s\n",str)

    //有层次打印json,后两个参数分别为每一行的前缀,每一层的缩进
    str0, _ := json.MarshalIndent(user,""," ")
    fmt.Printf("%s\n",str0)

输出:

{"UserName":"tyming","PassWord":"1234567890"}
{
    "UserName": "tyming",
    "PassWord": "1234567890"
}

2)json->结构体

//匹配的字段名忽略大小写
jsonStr :=`{
        "username":"tyming",
        "password":"1234567890"
    }`

    var u User
    //json.Unmarshal()解码json格式,参数1:json文本(比特序列),参数2:目标容器
    json.Unmarshal([]byte(jsonStr),&u)
    fmt.Println(u)

输出:

{tyming 1234567890}

3)结构体标签的使用(解码生成标签中的字段名,编码匹配标签中的字段名)

type User struct {

    //`json:"-"` // 直接忽略字段
    //`json:"msg_name"` // 对应json字段名
    //`json:"msg_name,omitempty"` // 如果为空置则忽略字段
    UserName string `json:"username"`
    PassWord string `json:"password"`
}

func main(){

    user := User{
        UserName: "tyming",
        PassWord: "1234567890",//这里逗号不能少
    }
    //json.Marshal() 编写为json格式
    str, _ := json.Marshal(user)
    fmt.Printf("%s\n",str)

    //结构体加标签
    jsonStr :=`{
        "username":"tyming",
        "password":"1234567890"
    }`

    var u User
    //解码为结构体
    json.Unmarshal([]byte(jsonStr),&u)
    fmt.Println(u)
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值