【发布时间】:2020-03-25 23:05:14
【问题描述】:
如果您有一个带有多个嵌套字段的 JSON 对象(Java 中),您如何断言某个特定字段不存在?
例如对于下面的以下对象,您将如何断言字段 C 存在/不存在:
{
"A": {
"B": {
"C": "field exists"
}
}
}
【问题讨论】:
如果您有一个带有多个嵌套字段的 JSON 对象(Java 中),您如何断言某个特定字段不存在?
例如对于下面的以下对象,您将如何断言字段 C 存在/不存在:
{
"A": {
"B": {
"C": "field exists"
}
}
}
【问题讨论】:
这是一个想法。 您可以使用任何库(例如 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?
【讨论】:
对于使用 java 和 json 进行单元测试,我使用 hamcrest 库和其中一个扩展库 json-path-assert。
这让我可以使用json-path 表达式来断言。
断言 C 确实存在
assertThat(yourJsonString, hasJsonPath("$.*.*.C"));
比 C 断言不存在
assertThat(yourJsonString, hasNoJsonPath("$.*.*.C"));
【讨论】: