Go语言 Marshal 序列化和反序列化

Posted 张志翔ۤ

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Go语言 Marshal 序列化和反序列化相关的知识,希望对你有一定的参考价值。

        最近项目中有看到使用 Marshal,大概查了一下是做 Json 序列化和反序列化的,特此记录便于日后查阅。

package main
 
import (
    "fmt"
    "encoding/json"
)
 
func test1(){
    m := map[string]interface{} {"name":"taoge", "age":30, "addr":"China"}
    fmt.Println(m)
 
    data, _ := json.Marshal(m)
    fmt.Println(string(data))
 
    m1 := make(map[string]interface{})
    _ = json.Unmarshal(data, &m1)
    fmt.Println(m1)
}
 
func test2(){
    type Person struct {
        Name string `json:"name"`
        Age  int    `json:"age"`
        Addr string `json:"addr"`
    }
    
    p1 := Person{
        Name: "taoge",
        Age:  30,
        Addr: "China",  // oh my god, this comma cannot be omitted
    }
    
    fmt.Println(p1)
 
    data, _ := json.Marshal(p1)
    fmt.Println(string(data))
    
    var p2 Person 
    _ = json.Unmarshal(data, &p2)
    fmt.Println(p2)
}
 
func main() {
    test1()
    fmt.Println("-------------")
    test2()
}

        结果:

map[name:taoge age:30 addr:China]
{"addr":"China","age":30,"name":"taoge"}
map[addr:China age:30 name:taoge]
-------------
{taoge 30 China}
{"name":"taoge","age":30,"addr":"China"}
{taoge 30 China}

        简单, 不需要说。

        到此 Go语言 Marshal 序列化和反序列化介绍完成。

以上是关于Go语言 Marshal 序列化和反序列化的主要内容,如果未能解决你的问题,请参考以下文章

Go读写文件

go语言学习 ---struct 对象的序列化和反序列化(xml)

struct对象的序列化和反序列化

DateTime序列化和反序列化

JSON 序列化和反序列化 In Go

[Go] 使用protobuf进行序列化和反序列化