func (om *OrderedMap) Has(key string) bool {
	_, ok := om.m[key]
	return ok
}
Check if value exists
package ordered
import (
	"bytes"
	"container/list"
	"encoding/json"
	"fmt"
	"io"
)
type KVPair struct {
	Key   string
	Value interface{}
}
type m map[string]interface{}
type OrderedMap struct {
	m
	l    *list.List
	keys map[string]*list.Element  
}
func NewOrderedMap() *OrderedMap {
	return &OrderedMap{
		m:    make(map[string]interface{}),
		l:    list.New(),
		keys: make(map[string]*list.Element),
	}
}
func NewOrderedMapFromKVPairs(pairs []*KVPair) *OrderedMap {
	om := NewOrderedMap()
	for _, pair := range pairs {
		om.Set(pair.Key, pair.Value)
	}
	return om
}
func (om *OrderedMap) Set(key string, value interface{}) {
	if _, ok := om.m[key]; !ok {
		om.keys[key] = om.l.PushBack(key)
	}
	om.m[key] = value
}