如何在JSONPath匹配器中转义方括号?
.andExpect(jsonPath("$.fieldErrors.addresses[0].contactAddress1", Matchers.any(String.class)))
也不匹配,我认为这是因为方括号。
"{\"errors\":[],\"fieldErrors\":{\"adminName\":\"Admin Name is a required field\",\"addresses[0].contactCompany\":\"Company is a required field\",\"addresses[0].contactAddress1\":\"Address is a required field\",\"addresses[0].contactPhoneNumber\":\"Phone Number cannot exceed 25 characters\"},\"uiMessageClass\":null,\"uiMessage\":null,\"redirectUrl\":null,\"object\":null}"
有没有办法摆脱括号?
答案 0 :(得分:0)
addresses
不包含名为.andExpect(jsonPath("$.fieldErrors['addresses[0].contactAddress1']", Matchers.any(String.class)))
的属性,该属性是数组或列表。因此,您使用了错误的语法。
您是否尝试过像这样简单引用该属性的名称?
@Test
public void test() {
String input = "{\"errors\":[],\"fieldErrors\":{\"labels[en]\":\"Label is a required field\",\"externalIdentifier\":\"Identifier is a required field\"},\"uiMessageClass\":null,\"uiMessage\":null,\"redirectUrl\":null,\"object\":null}";
JsonPathExpectationsHelper jsonPath = new JsonPathExpectationsHelper("$.fieldErrors['labels[en]']");
jsonPath.exists(input);
jsonPath.assertValue(input, Matchers.any(String.class));
jsonPath.assertValue(input, "Label is a required field");
}
有关详细信息,请参阅官方JsonPath文档。
我还尝试了您在评论中讨论的其他失败测试,但我无法重现该问题。例如,以下测试对我来说没问题:
{{1}}
此致
萨姆