从 MvcResult 获取 json 的大小
Get size of json from MvcResult
我正在测试 API 并从数据库中获取所有数据。我将回复保存为
MvcResult result = mockMvc.perform(..some code..).andReturn();
我收到了 json 作为回应。我想获得 json 数组的长度。
所以,如果我在数据库中有 2 行,我想得到 2 作为结果。
或者是否有另一种方法可以计算数据库中存在的行数。
如果你想获得 json 数组长度,这就是方法,
1.if 你导入 org.json.simple.JSONArray
你可以使用 JSONArray.size()
2.if 你导入 org.json.JSONArray
你可以使用 JSONArray.length()
尝试:
String content = result.getResponse().getContentAsString();
然后试试这个 one
由于您使用的是 MockMvc 而不是使用 andReturn()
返回,因此您可以使用 JSONPath 支持,例如:
mvc.perform( MockMvcRequestBuilders
.get("/resource")
.accept(MediaType.APPLICATION_JSON))
.andExpect(status().isOk())
.andExpect(MockMvcResultMatchers.jsonPath("$.length").value(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))
使用com.jayway.JsonPath(您已经通过spring-boot-starter-test class)
Integer length = JsonPath.read(result.getResponse().getContentAsString(), "$.length()");
我正在测试 API 并从数据库中获取所有数据。我将回复保存为
MvcResult result = mockMvc.perform(..some code..).andReturn();
我收到了 json 作为回应。我想获得 json 数组的长度。 所以,如果我在数据库中有 2 行,我想得到 2 作为结果。
或者是否有另一种方法可以计算数据库中存在的行数。
如果你想获得 json 数组长度,这就是方法,
1.if 你导入 org.json.simple.JSONArray
你可以使用 JSONArray.size()
2.if 你导入 org.json.JSONArray
你可以使用 JSONArray.length()
尝试:
String content = result.getResponse().getContentAsString();
然后试试这个 one
由于您使用的是 MockMvc 而不是使用 andReturn()
返回,因此您可以使用 JSONPath 支持,例如:
mvc.perform( MockMvcRequestBuilders
.get("/resource")
.accept(MediaType.APPLICATION_JSON))
.andExpect(status().isOk())
.andExpect(MockMvcResultMatchers.jsonPath("$.length").value(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))
使用com.jayway.JsonPath(您已经通过spring-boot-starter-test class)
Integer length = JsonPath.read(result.getResponse().getContentAsString(), "$.length()");