jsonmerge.go 559 B

1234567891011121314151617181920212223242526
  1. package runtime
  2. import (
  3. "encoding/json"
  4. "github.com/apapsch/go-jsonmerge/v2"
  5. )
  6. // JsonMerge merges two JSON representation into a single object. `data` is the
  7. // existing representation and `patch` is the new data to be merged in
  8. func JsonMerge(data, patch json.RawMessage) (json.RawMessage, error) {
  9. merger := jsonmerge.Merger{
  10. CopyNonexistent: true,
  11. }
  12. if data == nil {
  13. data = []byte(`{}`)
  14. }
  15. if patch == nil {
  16. patch = []byte(`{}`)
  17. }
  18. merged, err := merger.MergeBytes(data, patch)
  19. if err != nil {
  20. return nil, err
  21. }
  22. return merged, nil
  23. }