msgpack在java/c和go中序列化的區別-解決

既然已經知道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

相關文章
相關標籤/搜索