...

Source file src/github.com/clbanning/mxj/v2/gob.go

Documentation: github.com/clbanning/mxj/v2

     1  // gob.go - Encode/Decode a Map into a gob object.
     2  
     3  package mxj
     4  
     5  import (
     6  	"bytes"
     7  	"encoding/gob"
     8  )
     9  
    10  // NewMapGob returns a Map value for a gob object that has been
    11  // encoded from a map[string]interface{} (or compatible type) value.
    12  // It is intended to provide symmetric handling of Maps that have
    13  // been encoded using mv.Gob.
    14  func NewMapGob(gobj []byte) (Map, error) {
    15  	m := make(map[string]interface{}, 0)
    16  	if len(gobj) == 0 {
    17  		return m, nil
    18  	}
    19  	r := bytes.NewReader(gobj)
    20  	dec := gob.NewDecoder(r)
    21  	if err := dec.Decode(&m); err != nil {
    22  		return m, err
    23  	}
    24  	return m, nil
    25  }
    26  
    27  // Gob returns a gob-encoded value for the Map 'mv'.
    28  func (mv Map) Gob() ([]byte, error) {
    29  	var buf bytes.Buffer
    30  	enc := gob.NewEncoder(&buf)
    31  	if err := enc.Encode(map[string]interface{}(mv)); err != nil {
    32  		return nil, err
    33  	}
    34  	return buf.Bytes(), nil
    35  }
    36  

View as plain text