====== 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