Skip to content

Instantly share code, notes, and snippets.

@hirokazumiyaji
Created September 7, 2015 15:09
Show Gist options
  • Save hirokazumiyaji/6105b596b74baa35388a to your computer and use it in GitHub Desktop.
Save hirokazumiyaji/6105b596b74baa35388a to your computer and use it in GitHub Desktop.
codec encode / decode sample
package main
import (
"fmt"
"reflect"
"github.com/ugorji/go/codec"
)
type Data map[string]interface{}
func (d *Data) toMsgpack() ([]byte, error) {
var buffer []byte
var handler codec.MsgpackHandler
handler.MapType = reflect.TypeOf(map[string]interface{}(nil))
if err := codec.NewEncoder(&buffer, &handler).Encode(d); err != nil {
return nil, err
}
return buffer, nil
}
func (d *Data) toJson() ([]byte, error) {
var buffer []byte
var handler codec.JsonHandler
if err := codec.NewEncoder(&buffer, &handler).Encode(d); err != nil {
return nil, err
}
return buffer, nil
}
func loadMsgpack(data []byte) (*Data, error) {
var d Data
var handler codec.MsgpackHandler
handler.MapType = reflect.TypeOf(map[string]interface{}(nil))
if err := codec.NewDecoder(&data, &handler).Decode(&d); err != nil {
return nil, err
}
return &d, nil
}
func loadJson(data []byte) (Data, error) {
var d Data
var handler codec.JsonHandler
if err := codec.NewDecoder(&data, &handler).Decode(&d); err != nil {
return nil, err
}
return &d, nil
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment