You can know keys/paths but nothing else. Or you might have user-specific parts that won't be concurrently modified, but the base JSON doc might be modified by others. You'd have to have the latest version to do a text-based patch.
A text-based diff doesn't really gain much for what it loses in use cases.
This system requires knowledge of existing values/nodes to create the diff/patch document.
However for JSON data, it does have the advantage of not clobbering data unlike a string diff as you mentioned.