Java-Bibliothek, die JSON unterscheidet und generiert, was hinzugefügt/gelöscht/geändert wurde?

Gibt es Java-Bibliotheken, die zwei JSON-Zeichenfolgen unterscheiden und eine Baumstruktur generieren können, die Sie durchlaufen können, um herauszufinden, welche Knoten hinzugefügt, welche Knoten gelöscht und welche Knoten geändert wurden?

Die neueste Version von fge json-patch ist November 2014, wobei angenommen wird, dass das Projekt aufgegeben wurde.

Antworten (2)

Ich habe zwei Java-Bibliotheken gefunden, die zwei JSON-Strings unterscheiden und mitteilen können, was hinzugefügt, gelöscht und geändert wurde. Beide Bibliotheken erzeugen Ausgaben gemäß RFC 6902 (JSON Patch):

zjsonpatch ist besser, weil es das Einfügen/Entfernen von Elementen aus Arrays erkennen kann. Fge json-patch kann damit nicht umgehen - wenn ein Element in die Mitte eines Arrays eingefügt wird, denkt es, dass dieses Element und jedes Element danach geändert wurde, da sie alle um eins verschoben werden.

Beispielverwendung für zjsonpatch:

ObjectMapper jackson = new ObjectMapper(); 
JsonNode beforeNode = jackson.readTree(beforeString); 
JsonNode afterNode = jackson.readTree(afterString); 
JsonNode patchNode = JsonDiff.asJson(beforeNode, afterNode); 
String diff = patchNode.toString();

Ich habe einige Nachforschungen angestellt, um eine Diff-Generierungsbibliothek für mich fertigzustellen. Der von @pacoverflow aufgezeigte Fehler scheint behoben zu sein. Ich bin diesem Problem nicht begegnet. Meine Stimme ist aus folgenden Gründen für fge json-patch :

  1. Gute Dokumentationsunterstützung.
  2. Unterstützt die Serialisierung.
  3. Folgt am ehesten den RFC 6902-Standards. zjsonpatch kann sich beim Vergleich von int- und Float-Werten anders verhalten (wobei 1 und 1.0 unterschiedlich behandelt werden).
  4. Offene Fehler mit zjsonpatch weisen auf die Möglichkeit defekter Patches hin.