既然已經知道msgpack-java/msgpack-c裏,默認狀況下把class pack成相似json-array
java
而msgpack-go,默認狀況下把class pack成相似json-mapgit
順着這個,翻看msgpack-Go的代碼,找到了MsgpackHandlegithub
。。。。中間過程省略json
最後找到答案,其實msgpack-go已經提供好apiapi
package main import ( "fmt" "github.com/ugorji/go/codec" ) type UserStruct struct { ID int32 Name string } var ( b []byte mh codec.MsgpackHandle ) func main() { user := UserStruct{9, "abcd"} //關鍵調用 mh.StructToArray = true enc := codec.NewEncoderBytes(&b, &mh) err := enc.Encode(user) if err == nil { fmt.Println("data:", b) } else { fmt.Println("err:", err) } dec := codec.NewDecoderBytes(b, &mh) var new_user UserStruct err = dec.Decode(&new_user) if err == nil { fmt.Println("new_user:", new_user) } else { fmt.Println("err:", err) } }
到這裏msgpack 做爲一個至關不錯的序列化/反序列化的lib,基本能夠投入使用spa