Я пишу некоторый код для проверки свойств JSON из тела запроса. Мой фрагмент кода приведен ниже:
ResponseActions responseActions = expect(requestTo(startsWith(url)))
.andExpect(method(HttpMethod.POST))
.andExpect(header(HttpHeaders.AUTHORIZATION, AUTHORIZATION_HEADER_VALUE))
.andExpect(header(HttpHeaders.CONTENT_TYPE, "application/json"))
.andExpect(content().contentType(MediaType.APPLICATION_JSON))
.andExpect(jsonPath("$.file", is(equalTo(contentId))))
.andExpect(jsonPath("$.member").exists())
.andExpect(jsonPath("$.member..tag", is(equalTo("email"))))
.andExpect(jsonPath("$.member.email", is(equalTo(permissionId))));
Здесь тело запроса содержит ниже JSON:
{
"file" : "{contentId}",
"member" : {
".tag" : "email",
"email" : "{emailAddress}"
}
}
Из-за свойства JSON ".tag", которое содержит точка (.) в начале, я получаю исключение ниже:
org.springframework.web.util.NestedServletException: Handler dispatch failed; nested exception is java.lang.AssertionError: JSON path "$.member..tag"
Expected: is "email"
but: was <[]>
at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:1055) ~[spring-webmvc-5.2.3.RELEASE.jar:5.2.3.RELEASE]
at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:943) ~[spring-webmvc-5.2.3.RELEASE.jar:5.2.3.RELEASE]
at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:1006) ~[spring-webmvc-5.2.3.RELEASE.jar:5.2.3.RELEASE]
at org.springframework.web.servlet.FrameworkServlet.doDelete(FrameworkServlet.java:931) ~[spring-webmvc-5.2.3.RELEASE.jar:5.2.3.RELEASE]
at javax.servlet.http.HttpServlet.service(HttpServlet.java:666) ~[tomcat-embed-core-9.0.30.jar:9.0.30]
....
Как проверить такое свойство JSON, которое начинается с точки (.), используя MockRestRequestMatchers.jsonPath (String, Matcher <> ) метод? Любая помощь приветствуется.