首页 > 解决方案 > 如何使用 jq 流过滤 JSON

问题描述

我有一个非常大的 JSON 文件,示例数据如下所示:

{"userActivities":{"L3ATRosRdbDgSmX75Z":{"deviceId":"60ee32c2fae8dcf0","dow":"Friday","localDate":"2018-01-19"},"L3ATSFGrpAYRkIIKqrh":{"deviceId":"60ee32c2fae8dcf0","dow":"Friday","localDate":"2018-01-20"}}}

我需要在 jq 流中的“localDate”字段上放置一个过滤器,以便输出看起来像以下 JSON:

{"L3ATSFGrpAYRkIIKqrh":{"deviceId":"60ee32c2fae8dcf0","dow":"Friday","localDate":"2018-01-19"}}

非常感谢任何帮助/指导!

标签: jsonjq

解决方案


在根据值进行选择时保留键值对的最简单方法是使用with_entries

jq '.userActivities
| with_entries(select(.value.localDate=="2018-01-20"))' input.json

输出

{
  "L3ATSFGrpAYRkIIKqrh": {
    "deviceId": "60ee32c2fae8dcf0",
    "dow": "Friday",
    "localDate": "2018-01-20"
  }
}

推荐阅读