Google diff-match-patch JAVA プラグインを使用して 2 つの JSON 文字列間のパッチを作成し、そのパッチをデータベースに保存しています。
diff_match_patch dmp = new diff_match_patch();
LinkedList<Patch> diffs = dmp.patch_make(latestString, originalString);
String patch = dmp.patch_toText(diffs); // Store patch to DB
これを使用して を渡すことpatch
で を再作成する方法はありますか?originalString
latestString
私はこれについてグーグルで検索し、この非常に古いコメント @ Google diff-match-patch Wikiを見つけました。
パッチを解除するには、差分をループし、DIFF_INSERT を DIFF_DELETE に交換してから、パッチを適用します。
しかし、これを示す有用なコードは見つかりませんでした。既存のコードでこれを達成するにはどうすればよいですか? ポインタまたはコード参照をいただければ幸いです。
編集:
私が直面している問題は、フロントエンドで、特定のフラグメント (従業員の詳細など) のすべてのトランザクションを表示するリビジョン モジュールを表示していることです。たとえば、どのユーザーがどの詳細を更新したかなどです。各パッチを逆に適用して JSON をフラグメント化し、現在のトランザクション データを取得してテーブルとして表示します ( http://marianoguerra.github.io/json.human.js/を使用)。しかし、一部の JSON データは有効な JSON ではなく、JSON.parse エラーが発生します。