JQ:按照正确的顺序打印字典键名和封装的属性

问题描述:

我正在尝试使用jq来提取*属性名称以及所附的时间戳。JQ:按照正确的顺序打印字典键名和封装的属性

JSON输入:

[ 
    { 
    "Something": { 
     "_metadata": { 
     "timestamp": "2016-02-18T12:32:50.276Z" 
     } 
    } 
    }, 
    { 
    "OtherThing": { 
     "_metadata": { 
     "timestamp": "2016-03-18T12:32:50.276Z" 
     } 
    } 
    }, 
    { 
    "ThirdThing": { 
     "_metadata": { 
     "timestamp": "2016-04-18T12:32:50.276Z" 
     } 
    } 
    } 
] 

所需的输出:

[ 
    { 
    "Something": "2016-02-18T12:32:50.276Z" 
    }, 
    { 
    "OtherThing": "2016-03-18T12:32:50.276Z" 
    }, 
    { 
    "ThirdThing": "2016-04-18T12:32:50.276Z" 
    } 
] 

试图jq '.[] | keys'这给我的只有顶层字典的名称。

[ 
    "Something" 
] 
[ 
    "OtherThing" 
] 
[ 
    "ThirdThing" 
] 

哪个过滤器可以实现这个功能?

这里是使用以产生规定的输出的滤波器:(在data.json假设数据)

map(map_values(._metadata.timestamp)) 

样品试验

$ jq -M 'map(map_values(._metadata.timestamp))' data.json 
[ 
    { 
    "Something": "2016-02-18T12:32:50.276Z" 
    }, 
    { 
    "OtherThing": "2016-03-18T12:32:50.276Z" 
    }, 
    { 
    "ThirdThing": "2016-04-18T12:32:50.276Z" 
    } 
] 

Try it online!

+0

感谢,工程。 – user1877106