[英]Searching a list of objects with identical keys for specific key, value pairs with JQ
[英]Using jq convert named keys to key value pairs
我有这样的 json:
{"searchResult":[{"mac":"xx:xx:xx:xx:xx:xx"},{"time":"2021_04_11 23:45:01"},{"field_1":"87"}]}
{"searchResult":[{"mac":"xx:xx:xx:xx:xx:xx"},{"time":"2021_04_11 01:10:29"},{"field_2":"Some text"},{"field_3":"8"}]}
{"searchResult":[{"mac":"xx:xx:xx:xx:xx:xx"},{"time":"2021_04_11 03:49:14"},{"field_1":"92"},{"field_3":"25"}]}
某些字段始终存在。 其他是可选的,有 1000 多个可能的字段,并且可以随时添加新字段。 要导入数据库(BigQuery),我希望它们的格式如下:
{"searchResult":[{"key":"mac","value":"xx:xx:xx:xx:xx:xx"},{"key":"time","value":"2021_04_11 23:45:01"},{"key":"field_1","value":"87"}]}
{"searchResult":[{"key":"mac","value":"xx:xx:xx:xx:xx:xx"},{"key":"time","value":"2021_04_11 01:10:29"},{"key":"field_2","value":"Some text"},{"key":"field_3","value":"8"}]}
{"searchResult":[{"key":"mac","value":"xx:xx:xx:xx:xx:xx"},{"key":"time","value":"2021_04_11 03:49:14"},{"key":"field_1","value":"92"},{"key":"field_3","value":"25"}]}
到目前为止,我有:
jq -c '.searchResult[] |= to_entries'
这使:
{"searchResult":[[{"key":"mac","value":"xx:xx:xx:xx:xx:xx"}],[{"key":"time","value":"2021_04_11 23:45:01"}],[{"key":"field_1","value":"87"}]]}
{"searchResult":[[{"key":"mac","value":"xx:xx:xx:xx:xx:xx"}],[{"key":"time","value":"2021_04_11 01:10:29"}],[{"key":"field_2","value":"Some text"}],[{"key":"field_3","value":"8"}]]}
{"searchResult":[[{"key":"mac","value":"xx:xx:xx:xx:xx:xx"}],[{"key":"time","value":"2021_04_11 03:49:14"}],[{"key":"field_1","value":"92"}],[{"key":"field_3","value":"25"}]]}
我们不能在每个键/值 object 周围有不必要的 arrays,我们不能在 BigQuery 中导入嵌套的 arrays,在这里它们是多余的。
我可以用 sed 解决这个问题,但根据我自己的理解,我希望这一切都在 jq 中完成。
非常感谢
本
直接、高效和稳健的方法:
.searchResult |= map(to_entries[])
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.