1 回答

TA貢獻1770條經驗 獲得超3個贊
嘗試使用父對象名稱和邏輯運算符AND。結果路徑將是
$..[?((@.resource.id == 5756) && (@.role.name == 'Edit'))].
它在單元測試中對我有用com.jayway.jsonpath:json-path:2.4.0
@Test
public void testParse() {
String json = "{\n" +
" \"dataObject\": [\n" +
" {\n" +
" \"id\": 263626,\n" +
" \"role\": {\n" +
" \"id\": 12054,\n" +
" \"name\": \"Edit\",\n" +
" \"description\": \"\"\n" +
" },\n" +
" \"resource\": {\n" +
" \"id\": 5756,\n" +
" \"type\": \"resource\"\n" +
" }\n" +
" },\n" +
" {\n" +
" \"id\": 263364,\n" +
" \"role\": {\n" +
" \"id\": 12054,\n" +
" \"name\": \"Edit\",\n" +
" \"description\": \"\"\n" +
" },\n" +
" \"resource\": {\n" +
" \"id\": 5728,\n" +
" \"type\": \"resource\"\n" +
" }\n" +
" }\n" +
" ]\n" +
"}";
DocumentContext parse = JsonPath.parse(json);
Object read = parse.read("$..[?((@.resource.id == 5756) && (@.role.name == 'Edit'))]");
assertNotNull(read);
}
添加回答
舉報