go中的json

json 是一种轻量级的数据交换格式,常常用作前后端数据交换

序列化

把go struct 序列化为Json对象,采用Marshal方法,编排序列化.

func Marshal(v interface{} )([]byte,error)

举个栗子:

type Message struct {
    Name string
    Body string
    time int64
}

使用Marshal序列化:

m := Message{"Alice", "Hello", 1294706395881547000}
b, err := json.Marshal(m) 
fmt.Println(b) //{"Name":"Alice","Body":"Hello"}

这里可以注意到,大写字母的元素,序列化之后也是大写字母,但是小写字母的并没有被序列化进来,因为在序列化的时候小写字母默认不进行序列化的.
如果序列化之后的字母不想要大写,可以采用struct tag
struct tag 可以决定marhsal和unmarshal函数如何序列化和反序列化

type MyStruct struct {
    SomeField string `json:"some_field"`
}

序列化之后也会是some_field

反序列化

反序列化unmarshal,其函数签名如下:

func Unmarshal(data []byte, v interface{}) error

如果要进行反序列化,首先需要创建一个可以接受序列化数据的Go struct :

var m Message
err := json.Unmarshal(b, &m)

同样支持嵌入式的序列化和反序列化

你可能感兴趣的:(go,json)