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)
同样支持嵌入式的序列化和反序列化

242

被折叠的 条评论
为什么被折叠?



