====== jq ====== **[[https://stedolan.github.io/jq/|jq]]** a lightweight and flexible command-line JSON processor. * Le [[https://stedolan.github.io/jq/manual/|Manuel]] * La [[https://github.com/stedolan/jq/wiki/FAQ|FAQ]] * Le [[https://github.com/stedolan/jq/wiki/Cookbook|Cookbook]] * Pour faire des requĂȘtes en ligne : https://jqplay.org * [[https://kaijento.github.io/2017/03/20/json-parsing-jq-group_by-max_by-and-sort_by/|JSON parsing: jq group_by() max_by() sort_by()]] * [[https://gist.github.com/olih/f7437fb6962fb3ee9fe95bda8d2c8fa4|Processing JSON using jq]] * [[https://stackoverflow.com/questions/tagged/jq|jq sur stackoverflow]] ===== Play with jq ===== ''members.json'': [ { "member_id": 123, "loans":[ { "date": "123", "media": [ { "title": "foo" }, { "title": "bar" } ] }, { "date": "456", "media": [ { "title": "foo" } ] } ] }, { "member_id": 456, "loans":[ { "date": "789", "media": [ { "title": "foo"} ] } ] } ] ==== Howto count occurrence of "grouped by key=value" with jq? ==== https://stackoverflow.com/questions/69423726/howto-count-occurrence-of-grouped-by-key-with-jq/ === Sans group_by === jq '"foo" as $title | .[] | { id: .member_id, $title, count: [.loans[].media[] | select(.title == $title)] | length }' members.json { "id": 123, "title": "foo", "count": 2 } { "id": 456, "title": "foo", "count": 1 } === Avec group_by === jq 'map( (.member_id) as $m | .loans[].media[] | select(.title=="foo") | {id: $m, title: .title} ) |group_by(.id)[] |.[0] + { count: length } ' members.json