首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用JSONAssert查找json失败

使用JSONAssert查找json失败
EN

Stack Overflow用户
提问于 2020-05-27 16:58:44
回答 1查看 2.1K关注 0票数 1

我希望使用Jackson来查找JSON,但它没有给出详细的错误消息。

因此,我尝试使用JSOnAssert查找两个JSON字符串之间的差异。

代码语言:javascript
复制
JSONAssert.assertEquals(expectedJsonResponse, actualJsonResponse, false);

遗憾的是,它似乎不匹配,并给出详细的错误信息,如示例。如果你用过它,你能澄清一下吗?

代码语言:javascript
复制
java.lang.AssertionError: data[0] Could not find match for element {"errors":[{"httpStatus":"BAD_REQUEST","personId":null,"details":"User ID [UNKNOWN]. Invalid ID: NONSENSE"}],"successfulIds":["A0","B1","C3"]}
at org.skyscreamer.jsonassert.JSONAssert.assertEquals(JSONAssert.java:222)

实际JSON:

代码语言:javascript
复制
{"_links":{"self":{"href":"https://myserver.com:1000/api/person/upload? myCsvFile={myCsvFile}","templated":true}},"data":[{"successfulIds":["A0","XYZ","C3"],"errors":[{"personId":null,"httpStatus":"BAD_REQUEST","details":"User ID [UNKNOWN]. Invalid ID: NONSENSE"}]}]}

预期的JSON:

代码语言:javascript
复制
{
    "_links": {
        "self": {
            "href": "https://myserver.com:1000/api/person/upload?myCsvFile={myCsvFile}",
            "templated": true
        }
    },
    "data": [
        {
            "successfulIds": [
                "A0",
                "B1",
                "C3"
            ],
            "errors": [
                {
                    "personId": null,
                    "httpStatus": "BAD_REQUEST",
                    "details": "User ID [UNKNOWN]. Invalid ID: NONSENSE"
                }
            ]
        }
    ]
}
EN

回答 1

Stack Overflow用户

发布于 2020-05-29 14:34:11

我试着给http://jsonassert.skyscreamer.org/的地址发电子邮件,但得到了一个

发送给jsonassert@Skyspamer.org的以下消息是无法交付的。造成此问题的原因: 5.1.0 -未知地址错误550-"5.1.1您试图访问的电子邮件帐户不存在

所以我试了一下ZJsonPatch。我喜欢的事实是,使用杰克逊与它,排序的成员并不重要。换句话说,我首先尝试使用Jackson来检查是否平等。杰克逊要独立行事。如果失败了,我将使用ZJsonPatch来告诉我差异是什么。

代码语言:javascript
复制
{"op":"replace","path":"/data/0/successfulIds/1","value":"B9"}

它很好地处理嵌套的JSON。

代码语言:javascript
复制
ObjectMapper mapper = new ObjectMapper();
JsonNode expected = mapper.readTree(expectedJsonResponse);
JsonNode actual = mapper.readTree(actualJsonResponse);

try {
    assertEquals(expected, actual);
} catch (AssertionError ae) {
    JsonNode patch = JsonDiff.asJson(actual, expected);
    throw new Exception(patch.toString(), ae);
}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/62048635

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档