func Example_recursiveMapStringInterface() { buf := &bytes.Buffer{} enc := msgpack.NewEncoder(buf) in := map[string]interface{}{"foo": map[string]interface{}{"hello": "world"}} _ = enc.Encode(in) dec := msgpack.NewDecoder(buf) dec.DecodeMapFunc = func(d *msgpack.Decoder) (interface{}, error) { n, err := d.DecodeMapLen() if err != nil { return nil, err } m := make(map[string]interface{}, n) for i := 0; i < n; i++ { mk, err := d.DecodeString() if err != nil { return nil, err } mv, err := d.DecodeInterface() if err != nil { return nil, err } m[mk] = mv } return m, nil } out, err := dec.DecodeInterface() fmt.Printf("%v %#v\n", err, out) // Output: <nil> map[string]interface {}{"foo":map[string]interface {}{"hello":"world"}} }
func (s *benchmarkStruct2) EncodeMsgpack(w io.Writer) error { enc := msgpack.NewEncoder(w) return enc.Encode( s.Name, s.Colors, s.Age, s.Data, s.CreatedAt, s.UpdatedAt, ) }
func (t *MsgpackTest) BenchmarkCSVMsgpack(c *C) { for i := 0; i < c.N; i++ { var num int var hello, world string buf := &bytes.Buffer{} enc := msgpack.NewEncoder(buf) dec := msgpack.NewDecoder(buf) if err := enc.Encode(1, "hello", "world"); err != nil { panic(err) } if err := dec.Decode(&num, &hello, &world); err != nil { panic(err) } } }
func (t *MsgpackTest) TestMapStringInterface2(c *C) { buf := &bytes.Buffer{} enc := msgpack.NewEncoder(buf) dec := msgpack.NewDecoder(buf) dec.DecodeMapFunc = func(d *msgpack.Decoder) (interface{}, error) { n, err := d.DecodeMapLen() if err != nil { return nil, err } m := make(map[string]interface{}, n) for i := 0; i < n; i++ { mk, err := d.DecodeString() if err != nil { return nil, err } mv, err := d.DecodeInterface() if err != nil { return nil, err } m[mk] = mv } return m, nil } in := map[string]interface{}{ "foo": "bar", "hello": map[string]interface{}{ "foo": "bar", }, } var out map[string]interface{} c.Assert(enc.Encode(in), IsNil) c.Assert(dec.Decode(&out), IsNil) c.Assert(out["foo"], Equals, "bar") mm := out["hello"].(map[string]interface{}) c.Assert(mm["foo"], Equals, "bar") }
func (s *coderStruct) EncodeMsgpack(w io.Writer) error { return msgpack.NewEncoder(w).Encode(s.name) }
func (t *MsgpackTest) SetUpTest(c *C) { t.buf = &bytes.Buffer{} t.enc = msgpack.NewEncoder(t.buf) t.dec = msgpack.NewDecoder(bufio.NewReader(t.buf)) }