daniele daniele - 1 year ago 256
JSON Question

JsonPath JUnit escape character for dots

I have a json field which is called template.welcome.email and I am writing a unit test that checks if that field is present in the reply from the server but I can't find an escape for the dots in the name of the field.
The code of my test is :

@Test
public void testEmailTemplates() throws Exception {
mockMvc.perform(get("/emailTemplates")
.contentType(MediaType.APPLICATION_JSON)
.locale(Locale.UK)
.accept(MediaType.APPLICATION_JSON))

.andDo(print())
.andExpect(status().isOk())

.andExpect(jsonPath("$.template.welcome.email").exists())

.andExpect(redirectedUrl(null))
.andExpect(forwardedUrl(null));
}


But I get the following exception, because the dots are interpreted like paths:

java.lang.AssertionError: No value for JSON path: $.template.welcome.email, exception: invalid path
at org.springframework.test.util.JsonPathExpectationsHelper.evaluateJsonPath(JsonPathExpectationsHelper.java:74)
at org.springframework.test.util.JsonPathExpectationsHelper.exists(JsonPathExpectationsHelper.java:121)
at org.springframework.test.web.servlet.result.JsonPathResultMatchers$3.match(JsonPathResultMatchers.java:77)
at org.springframework.test.web.servlet.MockMvc$1.andExpect(MockMvc.java:141)
at


Do you know any escape character for the jsonPath?

Answer Source

It seems it is a bug in jsonPath. I've looked to the source code and it seems it doesn't have possibility to escape characters in path. The problem is in PathTokenizer's splitPath method.

Recommended from our users: Dynamic Network Monitoring from WhatsUp Gold from IPSwitch. Free Download