首页 > 解决方案 > JSONpath,仅当其他元素有值时才返回结果

问题描述

我正在寻找 JSONpath 表达式来提取数组中的元素,前提是它包含另一个元素。

以下表达式返回所有元素;

$.differ.element[*]['id','alias']

这是 JSON 文件:

{
    "differ": {
        "element": [
            {
                "id": "Address",
                "alias": [
                    "Information about address"
                ]
            },
            {
                "id": "Address.extension",
                "path": "Address.extension"

            },
            {
                "id": "Address.extension:official",
                "path": "Address.extension",
                "alias": [
                    "Mark address"
                ]
            }
        ]
    }
}

这将产生以下输出:

[
    "Address",
    [
        "Information about address"
    ],
    "Address.extension",
    "Address.extension:official",
    [
        "Mark address"
    ]
]

我想省略 'Address.extension' 元素,因为它没有别名。我怎样才能做到这一点?

标签: jsonpath

解决方案


你可以试试这个

$.differ.element[?(@.alias)]

会得到这样的输出:

[
    {
        "id":"Address",
        "alias":[
            "Information about address"
        ]
    },
    {
        "id":"Address.extension:official",
        "path":"Address.extension",
        "alias":[
            "Mark address"
        ]
    }
]

推荐阅读