Я пытаюсь проанализировать коллекцию объектов JSON, например:
{
"stage": [
{
"name": "Stage 1",
"weeks": [
{
"name": "Week 1",
"matches": [
{
"teams": [
{
"name": "San Francisco Shock",
"score": "0",
"score_url": "https://overwatchleague.com/matches/10223"
},
{
"name": "Los Angeles Valiant",
"score": "4",
"score_url": "https://overwatchleague.com/matches/10223"
}
]
},
{
"teams": [
{
"name": "Shanghai Dragons",
"score": "0",
"score_url": "https://overwatchleague.com/matches/10224"
},
{
"name": "Los Angeles Gladiators",
"score": "4",
"score_url": "https://overwatchleague.com/matches/10224"
}
]
},
{
"teams": [
{
"name": "Dallas Fuel",
"score": "1",
"score_url": "https://overwatchleague.com/matches/10225"
},
{
"name": "Seoul Dynasty",
"score": "2",
"score_url": "https://overwatchleague.com/matches/10225"
}
]
},
и т. Д. И т. Д.
Я пытаюсь перевести это в другой формат,не является супер дружественным к JSON, с ним легче справиться, сжав его примерно так:
{"matches":
[
{
"team1": "San Francisco Shock",
"t1score": "0",
"team2": "Los Angeles Valiant",
"t2score": "4"
},
{ ... }
]
}
Я пытаюсь использовать этот фильтр jq для достижения этой цели:
jq '.stage[] | {matches: [{team1: .weeks[].matches[].teams[0].name, t1score:
.weeks[].matches[].teams[0].score, team2: .weeks[].matches[].teams[1].name,
t2score: .weeks[].matches[].teams[1].score}]}'
Проблема заключается в том, что он сопоставляет каждый экземпляр, скажем, ключа «имя» со значением «Шок Сан-Франциско» со всеми перестановками баллов и имен в массиве «совпадения».Я довольно новичок в jq, но я думаю, что это происходит, потому что я просто говорю ему отображать все элементы в «неделях» и «совпадениях» вместе через фильтр.Это правильно?И как будет выглядеть фильтр, который на самом деле делает то, что я пытаюсь попробовать?Я не нашел простого способа не допустить совпадения фильтра за пределами массива "groups".