首页 > 解决方案 > 如何使用asserj断言嵌套json的值?

问题描述

我正在尝试使用 assertJ 从 JSON 地图对象打印和断言addressLine1邮政编码值,但在断言时遇到问题。

{
  "Region": {
    "Test": {
      "address": {
        "addressLine1": "addressLine1",
        "addressLine2": "addressLine2",
        "otherDetails": {
          "postcode": "LS1 4HR",
          "country": "United Kingdom"
        }
      }
    }
  }
}

我已将 jabove json 转换为Map<String, Object> jsonAsMap 并尝试如下:

assertThat(jsonAsMap)
                .isNotNull()
                .isNotEmpty()
                .hasEntrySatisfying("Region", Region -> assertThat(Region).hasFieldOrProperty("Test").hasFieldOrProperty("address") )
                   .containsEntry("addressLine1","addressLine1");

标签: javaassertj

解决方案


我建议将https://github.com/lukas-krecan/JsonUnit用于 JSON 断言(或任何其他 JSON 断言库),您将获得比不知道 JSON 的 AssertJ 更好的功能。


推荐阅读