我正在使用Hamcrest Matcher来比较两个JSON对象。比较方法使用的是Gson解析器。
这个匹配器非常好用,但当两个JSON不同的时候,我只能显示如下信息:
Expected: <[{"data":"data1","application":{"id":"1"}}]>
but: <[{"data":"data1","application":{"id":"2"}}]>
这并不是很有帮助,我想展示哪些元素不匹配,类似于junit的assertEquals:
expected:<...a1","application":{"[filtered":false,"id":"1"]...> but was:<...a1","application":{"[id":"2"...>
有没有一种方法可以实现这个?
编辑:
@Override
protected void describeMismatchSafely(JsonElement item,
Description mismatchDescription) {
//mismatchDescription.appendValue(item);
assertEquals(item.toString(), originalJson.toString());
}
但这会给我带来:
expected:<...a1","application":{"[filtered":false,"id":"2"]...>
but was:<...a1","application":{"[id":"1","filtered":false],...>
注意只有"id:1"和"id:2"的差别,但JUnit在错误信息的JSON中显示了不同的排序顺序。