如何在 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,\"redire‌​ctUrl\":null,\"objec‌​t\":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");
}

此致,

山姆