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) DecodeMsgpack(r io.Reader) error { dec := msgpack.NewDecoder(r) return dec.Decode( &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) DecodeMsgpack(r io.Reader) error { return msgpack.NewDecoder(r).Decode(&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)) }