如何在 jsonPath 中转义 [ ]
how to escape [ ] in jsonPath
如何在 JSON 路径匹配器中转义方括号?
.andExpect(jsonPath("$.fieldErrors.addresses[0].contactAddress1", Matchers.any(String.class)))
不匹配,即使 JSON 存在,我认为这是因为方括号。
"{\"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}"
有没有办法避开括号?
fieldErrors
不包含名为 addresses
的 属性 数组或列表。因此你使用了错误的语法。
您试过像这样简单地引用 属性 的名称吗?
.andExpect(jsonPath("$.fieldErrors['addresses[0].contactAddress1']", Matchers.any(String.class)))
有关详细信息,请参阅官方 JsonPath 文档。
我还尝试了您在评论中讨论的其他失败测试,但我无法重现该问题。例如,以下测试对我来说很好:
@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");
}
此致,
山姆
如何在 JSON 路径匹配器中转义方括号?
.andExpect(jsonPath("$.fieldErrors.addresses[0].contactAddress1", Matchers.any(String.class)))
不匹配,即使 JSON 存在,我认为这是因为方括号。
"{\"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}"
有没有办法避开括号?
fieldErrors
不包含名为 addresses
的 属性 数组或列表。因此你使用了错误的语法。
您试过像这样简单地引用 属性 的名称吗?
.andExpect(jsonPath("$.fieldErrors['addresses[0].contactAddress1']", Matchers.any(String.class)))
有关详细信息,请参阅官方 JsonPath 文档。
我还尝试了您在评论中讨论的其他失败测试,但我无法重现该问题。例如,以下测试对我来说很好:
@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");
}
此致,
山姆