java - 如何检查 JSON 数组的所有元素是否以特定字符串开头?

标签 java json junit

输入数据如下所示。

[
  { 
    "mahKey": "mahString.yolo",
    "mahValue": "0"
  },
  {
    "mahKey": "notMahString.crymeariver",
    "mahValue": "1"
  },
  {
    "mahKey": "mahSTring.omg",
    "mahValue": "2"
  }
]
所以我有这个。
resultActions
        .andExpect(MockMvcResultMatchers.status().isOk())
        .andExpect(jsonPath("$.*", isA(ArrayList.class)))
        .andExpect(jsonPath("$.[mahKey]", Matchers.everyItem(Matchers.startsWith("mahString"))));
$.[mahKey] 之后的数组看起来像这样。
[
  "mahString.yolo",
  "notMahString.crymeariver",
  "mahSTring.omg"
]
但是,我收到以下错误:
com.jayway.jsonpath.InvalidPathException: Could not parse token starting at position 3. Expected ?, ', 0-9, * 
如何检查 JSON 数组的所有元素是否以 JUnit 中的特定字符串开头?

最佳答案

这应该这样做:
"$.*.mahKey"
所以语法看起来像:

 .andExpect(MockMvcResultMatchers.status().isOk())
 .andExpect(jsonPath("$.*", isA(ArrayList.class)))
 .andExpect(jsonPath("$.*.mahKey", Matchers.everyItem(Matchers.startsWith("mahString"))));
Tested here ,它正确检索了元素:
enter image description here

关于java - 如何检查 JSON 数组的所有元素是否以特定字符串开头?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66245551/

相关文章:

javascript - 使用 Javascript 和 REST 登录

java - Spring Security - 如何列出不同用户的对象

c# - 在 ASP.NET MVC 中全局应用 JSON 序列化程序设置

java - Maven 使用类别和配置文件运行特定测试不使用组标签

java - 为什么 Hibernate Session 会有这样的行为

java - 无法反射(reflect)。异常 java.lang.IllegalArgumentException : object is not an instance of declaring class

java - CQRS 和事件溯源的区别

javascript - 如何将 json 数组转换为 javascript 数组

java - 自定义 Jackson ObjectMapper 以读取自定义注释并屏蔽带注释的字段

java - 将 HttpUnit+junit 组织为独立应用程序的最佳设计