golang将结构体转换成json,json转换成结构体

yuluxs · 2018-08-23 19:08:58 · 4390 次点击 · 预计阅读时间 3 分钟 · 大约8小时之前 开始浏览    
这是一个创建于 2018-08-23 19:08:58 的文章,其中的信息可能已经有所发展或是发生改变。

1、将结构体转换成json需要用到marshl函数(或者marshlIndent()函数)。 区别:marshl函数没有将json格式化输出,输出是一个json的字符串。----不利于直接查看json的结构。maeshldent函数

可以将json格式化输出,可阅读性提高了。

2、将json字符串转换成结构体需要用到marshl()函数。

实例如下:

package main

import (
    "log"
    "encoding/json"
    "fmt"
)

type Movie struct{
    Title string
    Year int `json:"released"`
    Color bool `json:"color, omitempty"`
    Actors []string
}

func main(){
    var movies = []Movie{
        {Title:"Casabanca", Year: 1942, Color:false,
            Actors:[]string{"Humphrey Bogart", "Ingrid Bergman"}},
        {Title:"Casabanca2", Year: 1962, Color:true,
            Actors:[]string{"Humphrey Paul"}},
    }

    data, err := json.Marshal(movies)
    if err != nil {
        log.Fatalf("Json marshaling failed:%s", err)
    }
    fmt.Printf("%s\n", data)
    var movies2 []struct{Title string}
    // movies2 := make([]Movie, 10)
    if err3 := json.Unmarshal(data, &movies2); err3 !=nil{
        log.Fatalf("JSON unmarshling failed: %s", err)
    }
    fmt.Println("*****************", movies2)
    data2, err2 := json.MarshalIndent(movies, ""," ")
    if err2 != nil {
        log.Fatalf("Json marshlindent failed:%s", err)
    }
    fmt.Printf("%s\n", data2)  
}
//2
package main

import (
    "log"
    "encoding/json"
    "fmt"
)

type Movie struct{
    Title string
    Year int `json:"released"`
    Color bool `json:"color, omitempty"`
    Actors []string
}

func main(){
    var movies = []Movie{
        {Title:"Casabanca", Year: 1942, Color:false,
            Actors:[]string{"Humphrey Bogart", "Ingrid Bergman"}},
        {Title:"Casabanca2", Year: 1962, Color:true,
            Actors:[]string{"Humphrey Paul"}},
    }

    data, err := json.Marshal(movies)
    if err != nil {
        log.Fatalf("Json marshaling failed:%s", err)
    }
    fmt.Printf("%s\n", data)
    var movies2 []struct{Title string}
    // movies2 := make([]Movie, 10)
    if err3 := json.Unmarshal(data, &movies2); err3 !=nil{
        log.Fatalf("JSON unmarshling failed: %s", err)
    }
    fmt.Println("*****************", movies2)
    data2, err2 := json.MarshalIndent(movies, ""," ")
    if err2 != nil {
        log.Fatalf("Json marshlindent failed:%s", err)
    }
    fmt.Printf("%s\n", data2)
}

有疑问加站长微信联系(非本文作者))

入群交流(和以上内容无关):加入Go大咖交流群,或添加微信:liuxiaoyan-s 备注:入群;或加QQ群:692541889

4390 次点击  
加入收藏 微博
暂无回复
添加一条新回复 (您需要 登录 后才能回复 没有账号 ?)
  • 请尽量让自己的回复能够对别人有帮助
  • 支持 Markdown 格式, **粗体**、~~删除线~~、`单行代码`
  • 支持 @ 本站用户;支持表情(输入 : 提示),见 Emoji cheat sheet
  • 图片支持拖拽、截图粘贴等方式上传