【问题标题】:Get size of json from MvcResult从 MvcResult 获取 json 的大小
【发布时间】:2019-12-13 21:42:48
【问题描述】:

我正在测试一个 API 并从数据库中获取所有数据。我将响应保存为

MvcResult result = mockMvc.perform(..some code..).andReturn();

我得到一个 json 作为响应。我想得到json数组的长度。 所以,如果我在 DB 中有 2 行,我想得到 2 作为结果。

或者是否有另一种方法来计算数据库中存在的行数。

【问题讨论】:

  • 通常多行的响应是一个数组,比如[ {row1},{row2},.., ]。所以你可以simply use array.length属性。
  • @Narendhran,我有一个数组,但我没有在 MvcResult 方法中看到转换为数组或获取长度数组长度...
  • 有很多第三方库可以将json字符串转换为对象,一些著名的库是Jackson、GSON

标签: java json spring mockmvc


【解决方案1】:

如果你想得到json数组长度是这样的,

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

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

【讨论】:

  • 为什么不使用对 jsonpath 的内置支持而不是添加新的依赖项?
【解决方案2】:

试试:

String content = result.getResponse().getContentAsString();

然后试试这个one

【讨论】:

    【解决方案3】:

    由于您使用的是 MockMvc 而不是返回 andReturn(),因此您可以使用 JSONPath 支持,例如:

      mvc.perform( MockMvcRequestBuilders
      .get("/resource")
      .accept(MediaType.APPLICATION_JSON))
      .andExpect(status().isOk())
      .andExpect(MockMvcResultMatchers.jsonPath("$.length").value(2))
    

    【讨论】:

      【解决方案4】:

      假设您的回复是这样的:

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

      【讨论】:

        【解决方案5】:

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

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

        【讨论】:

          猜你喜欢
          • 2011-10-09
          • 1970-01-01
          • 2021-08-31
          • 2016-05-03
          • 1970-01-01
          • 2016-05-13
          • 1970-01-01
          • 1970-01-01
          • 2014-07-04
          相关资源
          最近更新 更多