【问题标题】:how to assert that a field is not present in a JSON Object如何断言 JSON 对象中不存在字段
【发布时间】:2020-03-25 23:05:14
【问题描述】:

如果您有一个带有多个嵌套字段的 JSON 对象(Java 中),您如何断言某个特定字段不存在?

例如对于下面的以下对象,您将如何断言字段 C 存在/不存在:

{
"A": {
       "B": {
           "C": "field exists"
       }
     }
}

【问题讨论】:

    标签: java json assert


    【解决方案1】:

    这是一个想法。 您可以使用任何库(例如 jackson)将 json 绑定到 java 对象。 您可以添加 bean 验证注释的对象类,如 @NonNull 等。 然后你可以获取一个 bean 验证器对象并在 java 对象上调用 validate。这会给你一系列错误。

    https://docs.oracle.com/javaee/6/tutorial/doc/gircz.html

    还有 2 个库实现了 jsr 303

    Is there an implementation of JSR-303 (bean validation) available?

    这里有一个小教程 https://www.baeldung.com/javax-validation

    【讨论】:

      【解决方案2】:

      对于使用 java 和 json 进行单元测试,我使用 hamcrest 库和其中一个扩展库 json-path-assert

      这让我可以使用json-path 表达式来断言。

      断言 C 确实存在

      assertThat(yourJsonString, hasJsonPath("$.*.*.C"));
      

      比 C 断言不存在

      assertThat(yourJsonString, hasNoJsonPath("$.*.*.C"));
      

      【讨论】:

        猜你喜欢
        • 2017-07-20
        • 1970-01-01
        • 2018-12-25
        • 1970-01-01
        • 2018-12-16
        • 2014-08-11
        • 1970-01-01
        • 2016-10-17
        • 1970-01-01
        相关资源
        最近更新 更多