我有一个类似于这样的JSONObject:
{
"category":"abc"
"staus":""open"
"external":[
{"name":"123", "type":"OTHER"},
{"name":"678", "type":"ALPHA"},
{"name":"890", "type":"DELTA"}
]
}如果我想使用JSONAssert来检查条目{“名称”:“678”}是否存在,并且我不知道项目的顺序和“外部”数组中的项目数,那么我应该如何使用Java呢?
看来ArrayValueMatcher应该是该走的路,但我就是不能让它起作用。
请帮帮忙
发布于 2019-03-08 16:08:04
您可以将JsonPath用于此usecase:
JSONArray array = JsonPath.read(json, "$.external[?(@.name == '678')]");
Assertions.assertThat(array).hasSize(1);发布于 2022-05-11 10:14:12
下面是一个使用JsonAssert的完整示例:
@Test
public void foo() throws Exception {
String jsonString = "{\n" +
" \"category\":\"abc\",\n" +
" \"staus\":\"open\",\n" +
" \"external\":[\n" +
" {\"name\":\"123\", \"type\":\"OTHER\"},\n" +
" {\"name\":\"678\", \"type\":\"ALPHA\"},\n" +
" {\"name\":\"890\", \"type\":\"DELTA\"}\n" +
" ]\n" +
"}";
JsonAssert.with(jsonString).assertThat("$.external[*].name", hasItem(equalTo("678")));
}https://stackoverflow.com/questions/53545497
复制相似问题