mergemap is a Go library to recursively merge JSON maps.
mergemap performs a simple merge of the src map into the dst map. That is, it takes the src value when there is a key conflict.
The only special behavior is when the conflicting key represents a map in both src and dst. Then, mergemap recursively descends into both maps, repeating the same logic. The max recursion depth is set by mergemap.MaxDepth.
var m1, m2 map[string]interface{}
json.Unmarshal(buf1, &m1)
json.Unmarshal(buf2, &m2)
merged, err := mergemap.Merge(m1, m2)
See the test file for some pretty straightforward examples.