为了账号安全,请及时绑定邮箱和手机立即绑定

从 MvcResult 获取 json 的大小

从 MvcResult 获取 json 的大小

阿晨1998 2023-05-17 15:03:36
我正在测试一个 API 并从数据库中获取所有数据。我将响应保存为MvcResult result = mockMvc.perform(..some code..).andReturn();我得到一个 json 作为响应。我想获取 json 数组的长度。所以,如果我在数据库中有 2 行,我想得到 2 作为结果。或者是否有另一种方法可以计算数据库中存在的行数。
查看完整描述

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))


查看完整回答
反对 回复 2023-05-17
?
饮歌长啸

TA贡献1951条经验 获得超3个赞

如果你想获得 json 数组长度,就是这样,

1.如果你导入org.json.simple.JSONArray你可以使用JSONArray.size()

2.如果你导入org.json.JSONArray你可以使用JSONArray.length()


查看完整回答
反对 回复 2023-05-17
?
拉风的咖菲猫

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))


查看完整回答
反对 回复 2023-05-17
?
翻阅古今

TA贡献1780条经验 获得超5个赞

使用com.jayway.JsonPath(你已经通过 spring-boot-starter-test 拥有了这个类)

Integer length = JsonPath.read(result.getResponse().getContentAsString(), "$.length()");


查看完整回答
反对 回复 2023-05-17
?
哔哔one

TA贡献1854条经验 获得超8个赞

尝试:

String content = result.getResponse().getContentAsString();
查看完整回答
反对 回复 2023-05-17
  • 5 回答
  • 0 关注
  • 156 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信