亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

從 JSONPath 數組的不同對象中查詢具有特定值的鍵

從 JSONPath 數組的不同對象中查詢具有特定值的鍵

慕斯王 2023-08-04 16:28:23
{  "dataObject": [    {      "id": 263626,      "role": {        "id": 12054,        "name": "Edit",        "description": ""      },      "resource": {        "id": 5756,        "type": "resource"      }    },    {      "id": 263364,      "role": {        "id": 12054,        "name": "Edit",        "description": ""      },      "resource": {        "id": 5728,        "type": "resource"      }    }  ]}我有一個 JSON 對象,如下所示。我需要從中提取 json 對象dataObjecthasname:Edit和 id: 5756。如何使用 JSON 路徑實現此目的?試過$..[?(@.name="Edit", @.id=5756)]哪個沒用。Java代碼:JsonPath.parse(json).read("$..[?(@.name='Edit'), (@.id=5756)]")
查看完整描述

1 回答

?
德瑪西亞99

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);

}


查看完整回答
反對 回復 2023-08-04
  • 1 回答
  • 0 關注
  • 151 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號