Documentation ¶
Overview ¶
Package jsonmerge helps mergeing JSON objects
For example you have this documents:
original.json
{ "number": 1, "string": "value", "object": { "number": 1, "string": "value", "nested object": { "number": 2 }, "array": [1, 2, 3], "partial_array": [1, 2, 3] } }
patch.json
{ "number": 2, "string": "value1", "nonexitent": "woot", "object": { "number": 3, "string": "value2", "nested object": { "number": 4 }, "array": [3, 2, 1], "partial_array": { "1": 4 } } }
After merge you will have this result:
{ "number": 2, "string": "value1", "object": { "number": 3, "string": "value2", "nested object": { "number": 4 }, "array": [3, 2, 1], "partial_array": [1, 4, 3] } }
Index ¶
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
This section is empty.
Types ¶
type Info ¶
type Info struct { // Errors is slice of non-critical errors of merge operations Errors []error // Replaced is describe replacements // Key is path in document like // "prop1.prop2.prop3" for object properties or // "arr1.1.prop" for arrays // Value is value of replacemet Replaced map[string]interface{} }
Info describes result of merge operation
func Merge ¶
func Merge(data, patch interface{}) (interface{}, *Info)
Merge merges patch document to data document
Returning merged document and merge info
func MergeBytes ¶
MergeBytes merges patch document buffer to data document buffer
Returning merged document buffer, merge info and error if any
func MergeBytesIndent ¶
func MergeBytesIndent(dataBuff, patchBuff []byte, prefix, indent string) (mergedBuff []byte, info *Info, err error)
MergeBytesIndent merges patch document buffer to data document buffer
Use prefix and indent for set indentation like in json.MarshalIndent ¶
Returning merged document buffer, merge info and error if any
Click to show internal directories.
Click to hide internal directories.