首页 > 解决方案 > 放心 - 比较两个 JSON 对象

问题描述

假设 GET 请求返回一些 JSON 对象:

{
 "a": 1, "b": 2, "c": 3, "date": "current_date"
}

我手里有一个类似的对象,我想检查它是否与键“a”、“b”、“c”相同,并忽略“日期”键。

我怎样才能做到这一点?

标签: javarest-assuredweb-api-testing

解决方案


我一直在使用JsonUnit,它真的很有帮助

String json1 = "{\r\n" + "  \"a\": 1,\r\n" + "  \"b\": 2,\r\n" + "  \"c\": 3,\r\n"
            + " \"date\": \"30-07-2020\"\r\n" + "}";

String json2 = "{\r\n" + "  \"a\": 1,\r\n" + "  \"b\": 2,\r\n" + "  \"c\": 3,\r\n"
            + " \"date\": \"31-07-2020\"\r\n" + "}";

assertThatJson(json1).whenIgnoringPaths("date").isEqualTo(json2);

静态导入:

import static net.javacrumbs.jsonunit.assertj.JsonAssertions.assertThatJson;

依赖:

    <dependency>
        <groupId>net.javacrumbs.json-unit</groupId>
        <artifactId>json-unit-assertj</artifactId>
        <version>2.18.1</version>
        <scope>test</scope>
    </dependency>

您还必须将json.orgorJackson 1.xJackson 2.xor Johnzonor添加Gson到类路径中

我用杰克逊


推荐阅读