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

golang中使用JSON

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

golang中使用JSON

golang标准库有一个名叫encoding/json的包,包含了JSON的序列化(Marshal)和反序列化(Unmarshal)的能力。

通过成员标签控制JSON输出
type Movie struct {
    Title  string
    Year   int  `json:"released"`
    Color  bool `json:"color,omitempty"`
    Actors []string
}

成员标签是一组有空格分开的键值对,格式为key:"value"。键json对应的值是输出JSON的文字或其它选项,omitempty的意思是,当这个成员是零值或空值时不输出。

JSON序列化
var movies = []Movie{
    {
        Title: "Casablanca", Year: 1942, Color: false,
        Actors: []string{"Humphrey Bogart", "Ingrid Bergman"},
    },
    {
        Title: "Cool Hand Luke", Year: 1967, Color: true,
        Actors: []string{"Paul Newman"},
    },
    {
        Title: "Bullitt", Year: 1968, Color: true,
        Actors: []string{"Steve McQueen", "Jacqueline Bisset"},
    },
}

// if data, err := json.Marshal(movies); err == nil {
data, err := json.MarshalIndent(movies, "", "  ")
if err == nil {
    jsonStr := string(data)
    fmt.Println(jsonStr)
} else {
    fmt.Println(err)
}

json.Marshal输出的结果是很紧凑的json,可以使用json.MarshalIndent进行格式化。

JSON反序列化
var moviesBack []Movie
if err := json.Unmarshal(data, &moviesBack); err != nil {
    fmt.Println(err)
} else {
    for _, movie := range moviesBack {
        fmt.Println(movie.Title)
    }
}

json.Unmarshal的第二个参数,是一个对应类型变量的指针。

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

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

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