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"
}
]
感谢,工程。 – user1877106