msgpack在java/c和go中序列化的区别-解决
既然已经知道msgpack-java/msgpack-c里,默认情况下把class pack成类似json-array
而msgpack-go,默认情况下把class pack成类似json-map
顺着这个,翻看msgpack-Go的代码,找到了MsgpackHandle
。。。。中间过程省略
最后找到答案,其实msgpack-go已经提供好api
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,基本可以投入使用
郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。