Учитывая два объекта Javascript (A
и B
), есть ли способ сгенерировать заплату JSON, поэтому что когда этот патч применяется к 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.
В этом вопросе A
и B
являются объектами Javascript. Патч, созданный RFC6902, представляет собой JSON, указывающий на массив операций, которые при применении к A
этому объекту станут B
. Однако функция generate_patch
не обязательно должна возвращать JSON, скорее, для эффективности она может возвращать объект Javascript, который становится документом RFC6902 JSON-patch, когда для него вызывается JSON.stringify
.
Проекты, которые я нашел по теме:
- https://github.com/bruth/jsonpatch-js — только исправления (не создает пластырь)
- http://jsonpatchjs.com/ — то же самое
- https://github.com/Starcounter-Jack/Fast-JSON-Patch - наблюдает за объектом, не берет два разных объекта