Использование jq для получения значения, затем использование этого значения в качестве ключа для получения другого значения

#json #web-scraping #jq

#json #очистка веб-страниц #jq

Вопрос:

У меня есть несколько сотен таксономических идентификаторов, и я использую curl и jq для извлечения соответствующих значений из http://taxonomy.jgi-psf.org/tax/accession .

Есть ли способ передать jq самому себе, чтобы я мог использовать значение «level» в качестве ключа к другому запросу?

Для этого примера я хотел бы объединить эти две команды в одну:

 $ curl -s http://taxonomy.jgi-psf.org/tax/tax_id/48479 | jq '.[] | .level'
  

«нет ранга»

 $ curl -s http://taxonomy.jgi-psf.org/tax/tax_id/48479 | jq '.[] | ."no rank".name'
  

«образцы среды»

Ответ №1:

Вы можете использовать level значение свойства в качестве ключа:

 $ curl -s http://taxonomy.jgi-psf.org/tax/tax_id/48479 | jq '.[] | .["(.level)"].name'
"environmental samples"
  

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

1. Вам вообще не нужна интерполяция строк. .[][.[].level].name достаточно.