JQ: Объединение разных объектов в новый массив

#json #jq

#json #jq

Вопрос:

Я использую jq 1.5 в среде Windows для изменения файлов json. У меня есть следующий файл json:

 {"player_container":{"74016":["None","None","None","None","None","None","None","None"],"74002":["None","None","None","ta81a928e0624295b01499d7035d0308","tdd4e222600d42f9954b0be0448da0b1","None","None","None"],"74007":["None","None","None","None","None","None","None","None"],"74009":["None","None","None","None","None","None","kcb810a423dd4e179027f0feaae9ea60","None"],"74012":["x720ed571876471fab173ba05f71e4b3","None","None","None","None","None","None","None"],"74013":["None","None","None","None","None","None","None","None"],"74014":["vd86094b5a6e448f8c416d6fe75bec7c","None","None","h6ef696cf767464f9c367150fdb29fe4","None","g77b124cd46b41399c3db219ac0a76bd","None","None"],"74015":["None","None","None","None","None","None","None","None"]}}
  

В объекте player_container находятся разные объекты («имя» объекта и количество объектов время от времени различаются).
Я использую следующую команду jq фактически для объединения их в новый массив:

 .player_container | .[] | [{ user_id: .[]}]
  

Но это генерирует разные массивы json, а не один. То, что мне нужно, выглядит следующим образом:

    [
  {
    "user_id": "None"
  },
  {
    "user_id": "None"
  },
  {
    "user_id": "None"
  },
  {
    "user_id": "None"
  },
  {
    "user_id": "None"
  },
  {
    "user_id": "None"
  },
  {
    "user_id": "None"
  },
  {
    "user_id": "None"
  }
  {
    "user_id": "None"
  },
  {
    "user_id": "None"
  },
  {
    "user_id": "None"
  },
  {
    "user_id": "ta81a928e0624295b01499d7035d0308"
  },
  {
    "user_id": "tdd4e222600d42f9954b0be0448da0b1"
  },
  {
    "user_id": "None"
  },
  {
    "user_id": "None"
  },
  {
    "user_id": "None"
  }
  {
    "user_id": "None"
  },
  {
    "user_id": "None"
  },
  {
    "user_id": "None"
  },
  {
    "user_id": "None"
  },
  {
    "user_id": "None"
  },
  {
    "user_id": "None"
  },
  {
    "user_id": "None"
  },
  {
    "user_id": "None"
  }
  {
    "user_id": "None"
  },
  {
    "user_id": "None"
  },
  {
    "user_id": "None"
  },
  {
    "user_id": "None"
  },
  {
    "user_id": "None"
  },
  {
    "user_id": "None"
  },
  {
    "user_id": "kcb810a423dd4e179027f0feaae9ea60"
  },
  {
    "user_id": "None"
  }
  {
    "user_id": "x720ed571876471fab173ba05f71e4b3"
  },
  {
    "user_id": "None"
  },
  {
    "user_id": "None"
  },
  {
    "user_id": "None"
  },
  {
    "user_id": "None"
  },
  {
    "user_id": "None"
  },
  {
    "user_id": "None"
  },
  {
    "user_id": "None"
  }
  {
    "user_id": "None"
  },
  {
    "user_id": "None"
  },
  {
    "user_id": "None"
  },
  {
    "user_id": "None"
  },
  {
    "user_id": "None"
  },
  {
    "user_id": "None"
  },
  {
    "user_id": "None"
  },
  {
    "user_id": "None"
  }
  {
    "user_id": "vd86094b5a6e448f8c416d6fe75bec7c"
  },
  {
    "user_id": "None"
  },
  {
    "user_id": "None"
  },
  {
    "user_id": "h6ef696cf767464f9c367150fdb29fe4"
  },
  {
    "user_id": "None"
  },
  {
    "user_id": "g77b124cd46b41399c3db219ac0a76bd"
  },
  {
    "user_id": "None"
  },
  {
    "user_id": "None"
  }
  {
    "user_id": "None"
  },
  {
    "user_id": "None"
  },
  {
    "user_id": "None"
  },
  {
    "user_id": "None"
  },
  {
    "user_id": "None"
  },
  {
    "user_id": "None"
  },
  {
    "user_id": "None"
  },
  {
    "user_id": "None"
  }
]
  

Есть какие-нибудь советы?

Тимо

Ответ №1:

Вам нужно переместить только один символ:

 [.player_container | .[] | { user_id: .[]}]
  

В то время как ваша версия создает отдельный массив для каждого вывода .player_container | .[] , это соберет все в один массив.

Комментарии:

1. Привет, Михал, слеп на оба глаза. Спасибо!