gpt4 book ai didi

diff - Javers:比较两个json时忽略值对象中的特定字段

转载 作者:行者123 更新时间:2023-12-04 02:07:40 26 4
gpt4 key购买 nike

作为测试的一部分,我正在尝试比较两个 json,预期的和使用 Javers 的 API 响应。我希望比较排除响应动态生成的 ID 参数。

我的旁白是这样的

public class expectedResponse{

@DiffIgnore
private String id;
private String name;

}

我从 excel 文件读取的 expectedResponse- 和来自 API 的实际响应都被反序列化为这种格式,然后比较这两个响应。

JsonNode expectedOutput = mapper.readTree(expected.toString());
JsonNode apiResponse = mapper.readTree(actual.toString());
diff=javers.compare(expectedOutput, apiResponse);

但是这种比较并不排除/忽略 ID 字段。知道如何让它工作吗?我只想在比较结果中排除 ID 字段,应列出名称差异。

还有问题 2> 我正在尝试列出 diff 的变化

if (diff.hasChanges()) 
{

List<ValueChange> changes=diff.getChangesByType(ValueChange.class);
for (ValueChange change : changes)
{
logger.info(change.getPropertyName()+ "||" +change.getLeft().toString() + "||" +change.getRight().toString());

change.getPropertyName()- 不打印属性的名称,而只是打印 “_value”作为其值。

能否请您帮助确定代码出了什么问题,我该如何解决这个问题?我在谷歌的任何地方都找不到关于 Javers 的有用文档。感谢您的帮助。

最佳答案

你应该将你的域对象而不是对象与 JsonNode 类进行比较,看看 @DiffIgnore 注释只存在于你的域类中并且 之间没有联系>JsonNodeExpectedResponse,这就是为什么 Javers 不知道要忽略这个字段。

总而言之,您的代码应如下所示:

ExpectedResponse expectedOutput = ... 
ExpectedResponse apiResponse = ...
diff=javers.compare(expectedOutput, apiResponse);

关于diff - Javers:比较两个json时忽略值对象中的特定字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45111811/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com