如何使用jq获得不同级别的相同属性

时间:2018-01-02 09:13:09

标签: json jq

[{

    "name": "asd"
    "children": [
    {
        "name": "sfgdfg"
    }]
}]'

我可以得到所有父母或孩子的姓名

jq '.[] | (.name)'
jq '.[] | (.children[].name)'

如何使用包含OR的单个衬垫获得两者?

3 个答案:

答案 0 :(得分:0)

一种可能性是使用..

.. | objects | select( has("name") ) | .name

或者只是:

.. | .name? // empty

答案 1 :(得分:0)

合并这两个查询的一种方法是使用 .[] | (.name, .children[]?.name)

/(.)\1+/u

答案 2 :(得分:0)

我认为最简单的形式是:

.. | .name?

这是什么意思?

..是一个递归的体面,产生每一个价值。

.. | .NAME?

查找以名称开头的键中的所有值。

您可以在 here in the manual

中找到更多信息