Skip to content

orderedmap is a golang map where the keys keep the order that they're added. It can be de/serialized from/to JSON. It's based closely on the python collections.OrderedDict.

License

Notifications You must be signed in to change notification settings

iancoleman/orderedmap

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

39 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

orderedmap

Build Status

A golang data type equivalent to python's collections.OrderedDict

Retains order of keys in maps

Can be JSON serialized / deserialized

Usage

package main import ( "encoding/json" "github.com/iancoleman/orderedmap" ) func main() { // use New() instead of o := map[string]interface{}{} o := orderedmap.New() // use SetEscapeHTML() to whether escape problematic HTML characters or not, defaults is true o.SetEscapeHTML(false) // use Set instead of o["a"] = 1 o.Set("a", 1) // add some value with special characters o.Set("b", "\\.<>[]{}_-") // use Get instead of i, ok := o["a"] val, ok := o.Get("a") // use Keys instead of for k, v := range o keys := o.Keys() for _, k := range keys { v, _ := o.Get(k) } // use o.Delete instead of delete(o, key) o.Delete("a") // serialize to a json string using encoding/json bytes, err := json.Marshal(o) prettyBytes, err := json.MarshalIndent(o, "", " ") // deserialize a json string using encoding/json // all maps (including nested maps) will be parsed as orderedmaps s := `{"a": 1}` err := json.Unmarshal([]byte(s), &o) // sort the keys o.SortKeys(sort.Strings) // sort by Pair o.Sort(func(a *orderedmap.Pair, b *orderedmap.Pair) bool { return a.Value().(float64) < b.Value().(float64) }) }

Caveats

  • OrderedMap only takes strings for the key, as per the JSON spec.

Tests

go test 

Alternatives

None of the alternatives offer JSON serialization.

About

orderedmap is a golang map where the keys keep the order that they're added. It can be de/serialized from/to JSON. It's based closely on the python collections.OrderedDict.

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Contributors 6

Languages