jq
, czyli JSON w terminalu
jq
- narzędzie do pracy z plikami JSON. Umożliwia filtrowanie, wyodrębnianie, modyfikację i przekształcanie danych. Działa w terminalu, zatem idealnie nadaje się do automatyzacji.
Instalacja
Zwykle dostepne zaraz po instalacji systemu. Jeśli nie:
Debian/Ubuntu:
Na Red Hat/AlmaLinux:
Przykładowy plik data.json
Użyjemy takiej zawartości JSON:
[
{
"name": "Ann",
"age": 30,
"skills": ["Python", "Bash"]
},
{
"name": "John",
"age": 35,
"skills": ["Go", "Linux", "Docker"]
}
]
Podstawy
Wyświetlenie sformatowanego JSON-a:
Wyświetla cały plik data.json
z kolorowaniem i wcięciami. Kropka (.
) oznacza wszystko
Wyciąganie imion:
.
- cała tablica JSON[]
- iteracja po jej elementach.name
- wartość kluczaname
z każdego obiektu
Wynik:
Filtrowanie po wieku:
select(...)
pokazuje tylko elementy spełniające warunek.age > 32
- sprawdza wartość polaage
Wynik:
Wyciąganie wszystkich umiejętności:
.skills[]
- rozbija każdą listęskills
na osobne elementy
Wynik:
Lista unikalnych pól:
[...]
- zamyka dane w nową tablicęunique
- usuwa duplikaty
Wynik:
Modyfikacja danych
Dodanie pola active: true
:
Dodaje nowe pole active
do każdego obiektu
Wynik:
[
{
"name": "Ann",
"age": 30,
"skills": ["Python", "Bash"],
"active": true
},
{
"name": "John",
"age": 35,
"skills": ["Go", "Linux", "Docker"],
"active": true
}
]
Konwersja do CSV:
Wynik:
jq
+ curl
- analiza danych z API
Darmowe API pogodowe wttr.in
pozwala pobrać dane w formacie JSON bez klucza API
Przykład: pogoda dla Poznania
wttr.in/Poznan?format=j1
- dane pogodowe.current_condition[0].temp_C
- temperatura w °C
Wynik:
Oczywiście w zalezności od aktualnej pogody ;)Walidacja poprawności JSON:
Jeśli JSON jest poprawny - brak wyjścia. Jeśli nie - błąd składni.
W skryptach Bash:
Narzędzia
- 🎮 Playground online: https://jqplay.org
- 🌦️ API pogodowe bez klucza: https://wttr.in/:help