javers -Compare complex JSONObject返回错误的diffrences

时间:2018-02-18 12:29:50

标签: json javers

我有两个复杂的JSONObject:

JSONObject jsonOuter1 = new JSONObject();  
JSONObject jsonOuter2= new JSONObject();  
JSONObject JsonInner1 = new JSONObject();  
JSONObject JsonInner2= new JSONObject();  
JSONArray arr1 = new JSONArray();  
JSONArray arr2 = new JSONArray();  
arr1.put(new Long(12l));  
arr1.put(new String("hello"));  
arr2.put(new Long(12l));  
arr2.put(new String("hello"));  
JsonInner1.put(new String("helllo"), new Long(2l));  
JsonInner2.put(new String("helllo"), new Long(2l));  
arr1.put(JsonInner1);  
arr2.put(JsonInner2);  
jsonOuter1.put("first", arr1);  
jsonOuter2.put("first", arr2);  
Diff diff = javers.compare(jsonOuter1 , jsonOuter2);  

差异:

MapChange{globalId: org.json.JSONObject/ property: 'nameValuePairs', entryChanges: 
[EntryValueChange{ first: '[12,"hello", {"helllo":2}]'>>'[12,"hello",{"helllo":2}]' }]}

这只是一个例子,在我的应用程序中,我正在从DB中的json记录创建那些JSONObject。 我怎样才能比较内在价值并得到没有变化的正确结果? 非常感谢。

1 个答案:

答案 0 :(得分:0)

JaVers没有关于org.json对象的特定知识或配置,并将它们视为任何其他对象。在比较对象之前,您应该注意域模型映射和equals(),请参阅https://javers.org/documentation/domain-configuration/ 否则,您将获得默认映射(所有对象映射为ValueObjects),这有时可以工作,但它可能不适用于复杂的JSON模型。

很难给出关于映射org.json.JSONObject的提示,而无需仔细查看代码。