频道栏目
首页 > 程序开发 > 软件开发 > 其他 > 正文
go中结构体跟json格式转换
2017-10-10 14:18:00         来源:simatongming的博客  
收藏   我要投稿

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

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)
}
点击复制链接 与好友分享!回本站首页
上一篇:在Mac更新node版本教程
下一篇:Material Design:TabLayout学习笔记
相关文章
图文推荐
文章
推荐
点击排行

关于我们 | 联系我们 | 广告服务 | 投资合作 | 版权申明 | 在线帮助 | 网站地图 | 作品发布 | Vip技术培训 | 举报中心

版权所有: 红黑联盟--致力于做实用的IT技术学习网站