从两个对象生成JSON补丁

时间:2014-03-21 00:07:20

标签: javascript json json-patch

鉴于两个Javascript对象(AB),有没有办法生成JSON patch,这样当该补丁应用于A时,它就会改变对象的属性是对象B的属性?

例如,给定假设的JSONPatch函数(可能是与下面链接的函数名称相似的函数),所需的是generate_patch函数。

patch = generate_patch(A, B) JSONPatch.apply(patch, A) # modifies A so that it has the same properties as B.

在此问题中,AB是Javascript对象。 RFC6902创建的补丁是JSON,它表示一系列操作,当应用于A时,该对象将变为Bgenerate_patch函数不需要返回JSON,而是为了提高效率可以返回一个Javascript对象,该对象在调用JSON.stringify时成为RFC6902 JSON补丁文档。

我在这个主题上找到的项目是:

3 个答案:

答案 0 :(得分:6)

将我的评论转化为答案......

此代码https://www.npmjs.org/package/rfc6902似乎是针对所述RFC的补丁和差异的完整javascript实现。

我自己没有使用它,但是文档看起来就像你要求的那样。

答案 1 :(得分:5)

从版本0.3.9开始,https://github.com/Starcounter-Jack/Fast-JSON-Patch有一个compare方法,它返回两个对象之间的差异。如果我理解正确,那可能就是你要找的东西

答案 2 :(得分:2)

我还编写了一个库来生成补丁:https://github.com/gregsexton/json-patch-gen

在编写并使用了json-patch-gen后,我发现了'rfc6902'。我不确定他们如何比较:可能值得尝试两者以确定是否更符合您的需求。