栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Go语言

go语言struct转json

Go语言 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

go语言struct转json

go语言struct转json

1,概览

1,我们使用go语言标准库的 json.Marshal() 函数将结构体转为json
2,结构体转json的时候, 可给结构体设置标签来自定义成员的键名
3,给结构体定义的json标签里配置里omitempty,可在该字段为空时忽略

注意:
    给结构体定义json标签的时候要注意的问题:
        `json:" "` 标签的使用总结为以下几点:
        1,表示该字段被本包忽略;
            field string `json:"-"`
        2,表示该字段在 JSON 里使用“myName”作为键名;
            field string `json:"myName"`
        3,表示该字段在 JSON 里使用“myName”作为键名,并且如果该字段为空时将其省略掉;
            field string `json:"myName,omitempty"`
        4,该字段在json里的键名使用默认值,但如果该字段为空时会被省略掉,注意 omitempty 前面的逗号不能省略。
            field string `json:",omitempty"`

2,实例:

package jsonDemo

import (
    "fmt"
    "encoding/json"
)


func JsonDemoRun1() {

    //编程语言结构体
    type programLang struct {
        Name  string
        Other string
    }

    //定义一个web项目结构体
    type webItem struct {
        Name string
        Db   string
        Env  string
        Lang []programLang
    }

    item := &webItem{
        Name: "Taobao",
        Db:   "MySQL",
        Env:  "Centos7",
        Lang: []programLang{
            {Name: "PHP", Other: "swoole,laravel"},
            {Name: "GO", Other: "docker,beego"},
            {Name: "python", Other: ""},
            {Name: "JAVA", Other: "Spring Boot"},
        },
    }

    fmt.Println(item)
    res,err := json.Marshal(item)
    if err != nil {
        panic(err)
    }
    fmt.Println(res)
    fmt.Println(string(res))

}



func JsonDemoRun2() {
//编程语言结构体
type programLang struct {
Name  string `json:"name"`              //转json的时候自定义字段的标签,可用json标签定义
Other string `json:"tools,omitempty"`   //转json的时候,自定义标签加omitempty,在此值为空的时候可忽略
}

    //定义一个web项目结构体
    type webItem struct {
        Name string
        Db   string
        Env  string
        Lang []programLang
    }

    item := &webItem{
        Name: "Taobao",
        Db:   "MySQL",
        Env:  "Centos7",
        Lang: []programLang{
            {Name: "PHP", Other: "swoole,laravel"},
            {Name: "GO", Other: "docker,beego"},
            {Name: "python", Other: ""},
            {Name: "JAVA", Other: "Spring Boot"},
        },
    }

    fmt.Println(item)
    res,err := json.Marshal(item)
    if err != nil {
        panic(err)
    }
    fmt.Println(res)
    fmt.Println(string(res))
}

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/908952.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号