daniele daniele - 1 year ago 209
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 :

public void testEmailTemplates() throws Exception {




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)

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.