如何编写一个JSONCustomComparator
,而不是针对特定的字段,而是针对特定的数据类型?
我知道对于一个特定的领域,我能做的,
CustomComparator comparator = new CustomComparator(
JSONCompareMode.LENIENT,
new Customization("field.nunber", (o1, o2) -> true),
new Customization("field.code", (o1, o2) -> true));
JSONAssert.assertEquals(expectedJsonAsString, actualJsonAsString, comparator);
但是对于一个特定的数据类型,我该怎么做呢?例如,我必须比较Boolean和Int(true和1,false和0),
ValueMatcher<Object> BOOL_MATCHER = new ValueMatcher<Object>() {
@Override
public boolean equal(Object o1, Object o2) {
if (o1.toString().equals("true") && o2.toString().equals("1")) {
return true;
} else if (o1.toString().equals("false") && o2.toString().equals("0")) {
return true;
} else if (o2.toString().equals("true") && o1.toString().equals("1")) {
return true;
} else if (o2.toString().equals("false") && o1.toString().equals("0")) {
return true;
}
return JSONCompare.compareJSON(o1.toString(), o2.toString(), JSONCompareMode.LENIENT).passed();
}
};
CustomComparator comparator = new CustomComparator(JSONCompareMode.LENIENT, new Customization("*", BOOL_COMPARATOR));
但是这似乎不是最好的方法,而且BOOL_MATCHER将只返回布尔值,而不是JSONCompareResult,以便可以显示diff
。
有没有更好的方法?
1条答案
按热度按时间yh2wf1be1#
通过扩展
DefaultComparator
创建新的自定义比较器。用法: