Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/caohanyang/json_diff_rfc6902
This is the framework to handle JSON diff and patch based on RFC6902
https://github.com/caohanyang/json_diff_rfc6902
diff json json-diff json-patch patch rfc-6902
Last synced: about 2 months ago
JSON representation
This is the framework to handle JSON diff and patch based on RFC6902
- Host: GitHub
- URL: https://github.com/caohanyang/json_diff_rfc6902
- Owner: caohanyang
- License: lgpl-3.0
- Created: 2016-02-03T12:49:05.000Z (almost 9 years ago)
- Default Branch: master
- Last Pushed: 2018-01-31T22:16:01.000Z (almost 7 years ago)
- Last Synced: 2024-11-08T20:49:34.498Z (about 2 months ago)
- Topics: diff, json, json-diff, json-patch, patch, rfc-6902
- Language: JavaScript
- Homepage:
- Size: 665 KB
- Stars: 20
- Watchers: 5
- Forks: 1
- Open Issues: 5
-
Metadata Files:
- Readme: README.md
- License: LICENSE.txt
Awesome Lists containing this project
README
# JSON-Diff
JSON-Diff is to diff two JSON object and generate the patch, which is compliant to [JSON Patch RFC6902](https://tools.ietf.org/html/rfc6902).You can use JSON-Diff to
- **diff** two JSON object
- **apply** patches to get JSONJSON-Diff is able to handle operations:
_**Object**_
- **add**
- **remove**
- **replace**
- **copy**
- **move**_**Array**_
- **add**
- **remove**
- **replace**
- **copy**
- **move**
- **permutation**## INSTALL
### npm
`npm install json-diff-rfc6902 --save`### bower
`bower install json-diff-rfc6902 --save`- ```json-diff-rfc6902.js``` main bundle
- ```jdr``` global variable## API
```js
var jdr = require('json-diff-rfc6902');// diff the two JSON objects to get the pathes
var jdr_patch = jdr.diff(f_old, f_new [, options]);// The third parameter is optional, use the object options.
// Default:
options.OBJ_COM = true // Generate copy and move for object
options.ARR_COM = true // Generate minimal patch for array
options.HASH_ID = null // manually set the hash value// For example, if options.HASH_ID = "title", it will get the property value "title" of the elements in the array, and use them as the hash value to execute the operations transformation algorithem.
var jdr_patch = jdr.diff(f_old, f_new, {OBJ_COM: true, ARR_COM: true, HASH_ID: "title"});// apply the patches to the f_old object
jdr.apply(f_old, jdr_patch);```
## TEST
`npm install -g mocha``npm install -g fast-json-patch jiff json8-patch rfc6902`
`cd tests`
`node diff.js`
`mocha`
# Test 1
OBJ_PROP_INS
This is an object where a property is added.
# Test 2
OBJ_PROP_DEL
This is an object where a property is removed.
# Test 3
OBJ_PROP_MOD
This is an object where a property value is modified.
# Test 4
OBJ_PROP_CPY
This is an object where a property is copied.
# Test 5
OBJ_PROP_REN
This is an object where a field is renamed.
# Test 6
ARR_OBJ_UNSHIFT
This is an array of objects with a insertion at the beginning of the array.
# Test 7
ARR_OBJ_PUSH
This is an array of objects with a insertion at the end of the array.
# Test 8
ARR_OBJ_RINS
This is an array of objects with a insertion in the middle of the array.
# Test 9
ARR_OBJ_SHIFT
This is an array of objects with a deletion of the first element.
# Test 10
ARR_OBJ_POP
This is an array of objects with a deletion of the last element
# Test 11
ARR_OBJ_RDEL
This is an array of objects with a deletion of the moddle element
# Test 12
ARR_OBJ_BREPLACE
This is an array of objects with a replacement of the first element
# Test 13
ARR_OBJ_EREPLACE
This is an array of objects with a replacement of the last element
# Test 14
ARR_OBJ_MREPLACE
This is an array of objects with a replacement of the middle element
# Test 15
ARR_OBJ_CPY
This is an array of objects where a object is copied.
# Test 16
ARR_OBJ_PERM1
Permutation of a objects in an array of objects. [a, b, c] => [a, c, b]
# Test 17
ARR_OBJ_PERM2
Permutation of a objects in an array of objects. [a, b, c] => [b, c, a]
# Test 18
ARR_OBJ_PERM3
Permutation of a objects in an array of objects. [a, b, c] => [b, a, c]
# Test 19
ARR_OBJ_PERM4
Permutation of a objects in an array of objects. [a, b, c] => [c, b, a]
# Test 20
ARR_OBJ_PERM5
Permutation of a objects in an array of objects. [a, b, c] => [c, a, b]
# Test 21
ARR_OBJ_MOD
This is an array of objects where every object is added a field.