21

给定两个 Javascript 对象 (AB),有没有办法生成JSON 补丁,以便在应用该补丁时A将对象的属性更改为 object 的属性B

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

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

在这个问题中A,并且B是 Javascript 对象。由 RFC6902 创建的补丁是 JSON,它将指示一个操作数组,当应用于A该对象时将变为B. 该generate_patch函数虽然不需要返回 JSON,但为了提高效率,可以返回一个 Javascript 对象,该对象在被调用时会变成 RFC6902 JSON-patch 文档JSON.stringify

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

4

3 回答 3

11

将我的评论变成答案...

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

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

于 2014-03-21T01:12:18.793 回答
8

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

于 2014-11-30T20:45:11.100 回答
2

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

在编写和使用 json-patch-gen 之后,我发现了“rfc6902”。我不确定它们如何比较:可能值得尝试两者,看看是否更适合您的需求。

于 2014-11-30T17:19:28.760 回答