diff --git a/util.go b/util.go index 92cdf20..294fb54 100644 --- a/util.go +++ b/util.go @@ -1,6 +1,7 @@ package goutil import ( + "encoding/json" "errors" "fmt" "math/rand" @@ -188,3 +189,30 @@ func WeightKeyword(keywords string) string { return "" } + +func MergeMap(m1, m2 string) string { + var c1 map[string]interface{} + var c2 map[string]interface{} + + if strings.TrimSpace(m1) == "" { + return m2 + } + if strings.TrimSpace(m2) == "" { + return m1 + } + json.Unmarshal([]byte(m1), &c1) + json.Unmarshal([]byte(m2), &c2) + if c1 == nil { + c1 = make(map[string]interface{}) + } + if c2 == nil { + c2 = make(map[string]interface{}) + } + + for k, v := range c2 { + c1[k] = v + } + + res, _ := json.Marshal(c1) + return string(res) +}