5 回答
TA贡献1825条经验 获得超6个赞
由于您使用的是 MockMvc 而不是返回 withandReturn()
您可以使用 JSONPath 支持,例如:
mvc.perform( MockMvcRequestBuilders .get("/resource") .accept(MediaType.APPLICATION_JSON)) .andExpect(status().isOk()) .andExpect(MockMvcResultMatchers.jsonPath("$.length").value(2))
TA贡献1951条经验 获得超3个赞
如果你想获得 json 数组长度,就是这样,
1.如果你导入org.json.simple.JSONArray
你可以使用JSONArray.size()
2.如果你导入org.json.JSONArray
你可以使用JSONArray.length()
TA贡献1995条经验 获得超2个赞
假设您的回应是这样的:
{
result : [
{
"field1": "a",
"field2": "b"
},
{
"field1": "c",
"field2": "d"
}
]
}
在这种情况下,您将使用 MockMvc 编写如下断言:
mvc.perform(MockMvcRequestBuilders
.get("/resource")
.accept(MediaType.APPLICATION_JSON))
.andExpect(MockMvcResultMatchers.status().isOk())
.andExpect(MockMvcResultMatchers.jsonPath("$.result.length()").value(2))
TA贡献1780条经验 获得超5个赞
使用com.jayway.JsonPath(你已经通过 spring-boot-starter-test 拥有了这个类)
Integer length = JsonPath.read(result.getResponse().getContentAsString(), "$.length()");
添加回答
举报