【发布时间】:2018-09-03 02:12:53
【问题描述】:
我有一个非常大的 JSON 文本,需要使用
进行解析jq --stream
但是,没有详细的用例或博客可以理解这一点。
JSON结构如下:
{
"userActivities": {
"-----P9E3PJB5bTO1xrO": {
"aaid": "84dae6bd-cb3a-409c-9940-844f035b5fc7",
"callsign": "2day",
"deviceId": "1b771f137d1bc6ea",
"dow": "Thursday",
"downloadFlag": "N",
"email": "ckcafeandcatering@gmail.com",
"emailSha256": "6ab0992297a9478be9ae7ff26d811b1116c45a0c819ff1c9628c9b7ca4ec4129",
"event": "streamStop",
"firebaseUID": "anvlMojJFvQEvMXQW6GeRzLKCIA2",
"halfHourFull": "10h1",
"liveFlag": "Y",
"localDate": "1970-01-01",
"localHalfHour": 1,
"login": "google",
"minutesSinceMidnight": 601,
"quarterHourFull": "10q1",
"stationName": "2DayFM104.1"
},
"-GuGCJDEprMKczAMDUj8": {
"deviceId": "399a649c6cee6209",
"dow": "Thursday",
"downloadFlag": "N",
"event": "streamStart",
"halfHourFull": "18h1",
"liveFlag": "Y",
"localDate": "2009-01-01",
"localHalfHour": 1,
"minutesSinceMidnight": 1080,
"quarterHourFull": "18q1",
"stationName": "hit 105",
"streamListenMethod": "Headphones",
"timestampLocal": "2009-01-01T18:00:33.679+10:00",
"timestampUTC": "2009-01-01T08:00:33.679Z"
}
}
}
我想在 localDate 上放置一个过滤器,即只选择那些 localDate = '2009-01-01' 的数组。
目前,我将我的 JSON 提供给以下命令,它会提供所有数组。
jq -cn --stream 'fromstream(1|truncate_stream(inputs | select(.[0][] == "userActivities") | del(.[0][0])))'
如何放置过滤器?请建议。非常感谢任何帮助。
【问题讨论】:
-
请遵循minimal reproducible example 准则。此外,如果您使用数组和对象的标准 JSON 术语修改问题的措辞,将会很有帮助。