我的数据结构如下:
{
"data": {
"2017-06-20": {
"shifts": [
{
"id": 24,
"shift_request_id": 24,
"created_at": "2017-06-27 15:10:50",
"updated_at": "2017-06-27 15:10:50"
},
{
"id": 38,
"shift_request_id": 38,
"created_at": "2017-06-27 15:10:50",
"updated_at": "2017-06-27 15:10:50"
},
{
"id": 85,
"shift_request_id": 85,
"created_at": "2017-06-27 15:10:51",
"updated_at": "2017-06-27 15:10:51"
}
]
},
...
...
...
...
"2017-06-21": {
"shifts": [
{
"id": 26,
"shift_request_id": 26,
"created_at": "2017-06-27 15:10:50",
"updated_at": "2017-06-27 15:10:50"
},
{
"id": 28,
"shift_request_id": 28,
"created_at": "2017-06-27 15:10:50",
"updated_at": "2017-06-27 15:10:50"
},
{
"id": 88,
"shift_request_id": 88,
"created_at": "2017-06-27 15:10:51",
"updated_at": "2017-06-27 15:10:51"
}
]
}
}
}
因此,对于那些类似日期的格式化密钥,我们想要从第一个这样的密钥中提取shifts
。我对通过特定日期提取感兴趣,因为将日期指定为键很容易,而是从整个集合中选择,其中之一或范围,通过数字索引,一旦获得这些键。
我试过了:
jq '.[] | keys'
它给了我一系列所有键,但后来我不知道如何提取由数字索引的特定键的移位数组。
jq '.[] | keys[3]'
会连续给我第四个关键字,但后来.shifts
无法解决这个问题,并说Cannot index string with string "shifts"
答案 0 :(得分:0)
通过查看https://stackoverflow.com/a/34227629/2434479,我能够找到解决这个问题的方法,所以我会把它作为参考,以便在类似的情况下找到自己的人。
所以这样做的一种方法是:
❯ http ... | jq '.[] | to_entries[] | [.key, (.value.shifts | length)] | @csv'
当需要索引的特定键时,请说第4行:
❯ http|curl ... | jq '.[] | keys_unsorted[3] as $k | "\($k), \(.[$k].shifts | length)"'