JsonPath查找值范围的表达式

时间:2018-02-14 08:20:46

标签: json jsonpath

我有json结构,如下面的代码部分所述,我想只从configs数组中获取包含project_ids的元素 - 27

我尝试过的内容:JsonPath.read(json, "$.configs.*[?(@.context.project_ids.*[?(@=='27')])]") 但是,这会返回配置数组中的两个元素,因此它不正确。

{
    "configs": [{
        "context": {
            "is_global": false,
            "project_ids": [26, 27]
        },
        "options": {
            "is_required": true,
            "default_value": "1",
            "items": "1, Design\n2, Ready for Review\n3, Reviewed\n4, Rejected"
        },
        "id": "a1055c88-3a31-4eab-bb57-94351d9b52ce"
    },
    {
        "context": {
            "is_global": false,
            "project_ids": [1,5,11]
        },
        "options": {
            "is_required": false,
            "default_value": "",
            "items": "1, Test1\n2, Test2\n3, Test3"
        },
        "id": "9d56905b-5a51-447e-81fb-3270ae47d837"
    }],
    "include_all": true,
    "is_active": true
}

2 个答案:

答案 0 :(得分:0)

JSON数据包含键和值,如果要访问某些值,可以使用json特定值的键。在您的结构中,配置是包含包含值和项目ID的键。您可以使用该配置键访问值并生成数组的Id并使用Key从JSON获取详细信息并访问您想要的iD 。希望你明白了。

答案 1 :(得分:0)

我找到了答案。而不是==我们必须在查找表达式中使用CONTAINS。例如:($.*[?(@.context.project_ids CONTAINS '27')]