我是jq的新手,并且仍在尝试学习JSON的基础知识,所以请原谅我缺乏知识。 我发现这个工具非常快,但我很难得到我需要的结果。我确信这是可能的,因为我偶然做了一次:( 我有输入数据,例如
[
{"time":1499150456,"data":{"power":{"bus":3.88,"shunt":6.98,"load":3.89,"current":76.00},"light":{"light":21}}},
{"time":1499150516,"data":{"power":{"bus":3.93,"shunt":1.67,"load":3.93,"current":16.20},"light":{"light":21}}},
{"time":1499150576,"data":{"power":{"bus":3.92,"shunt":5.58,"load":3.93,"current":25.30},"light":{"light":21}}},
{}
]
我想将其提取为类似
的内容 [
1499150456,
1499150516,
1499150576
]
[
76.00,
16.20,
25.30
]
到目前为止我使用的是:
cat inputFile.json | jq -C '.[] | select (length > 0)'
输出没有最后一个空记录的漂亮的初始数组。 接下来,我能够做到
cat inputFile.json | jq -C '.[] | select (length > 0) | .time, .data.power.current'
结果非常接近,但不完全是我需要的。 我想使用我在某些示例中找到的map(.time),但这导致了错误 - 不确定如何使用它,并且示例到目前为止对我来说都不起作用。
答案 0 :(得分:1)
以下过滤器完全按照描述生成输出:
map(select(.time))
| map(.time), map(.data.power.current)
这被解析为map(...)| (map(...),map(...)),从而产生一个由两个JSON数组组成的流。
答案 1 :(得分:-2)
首先,您可以创建一个新的json对象。在创建操作之前,您应该像这样收集新数组中的数据;
Geocoder