【问题标题】:JSONpath, only return result if other element has a valueJSONpath,仅当其他元素有值时才返回结果
【发布时间】:2019-06-13 06:22:36
【问题描述】:

我正在寻找 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


    【解决方案1】:

    你可以试试这个

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

    会得到这样的输出:

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

    【讨论】:

    • 谢谢 Ajinkya,这行得通,但它也给了我路径元素:“path”:“Address.extension” 无论如何要省略这个吗?在真正的 JSON 中有更多的元素。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-10-26
    • 2021-03-15
    • 2020-08-11
    • 2021-12-25
    • 2021-09-08
    • 2021-11-17
    • 2021-11-16
    相关资源
    最近更新 更多