Разбор JIRA Insights API JSON с использованием jq - PullRequest
0 голосов
/ 21 мая 2018

Таким образом, у меня есть вывод JSON из API JIRA Insights, я копался и нашел jq для анализа JSON.Изо всех сил пытаясь разобраться, как разобрать следующее, чтобы вернуть только значения для objectTypeAttributeId, которые меня интересуют.

Например, меня интересует только значение objectTypeAttributeId 887 при условии, что имя объекта objectTypeAttributeId 911 указано какактивен, но затем хотел бы вернуть значение имени другого objectTypeAttributeId

Может ли это быть достигнуто с использованием только jq?Или, может быть, я использую что-то еще?

Я могу отфильтровать до этого уровня, который является разделом «атрибуты» вывода JSON, и распечатать каждое значение, но изо всех сил пытаюсь найти пример, отвечающий моей ситуации.

 {
      "id": 137127,
      "objectTypeAttributeId": 887,
      "objectAttributeValues": [
        {
          "value": "false"
        }
      ],
      "objectId": 9036,
      "position": 16
    },
    {
      "id": 137128,
      "objectTypeAttributeId": 888,
      "objectAttributeValues": [
        {
          "value": "false"
        }
      ],
      "objectId": 9036,
      "position": 17
    },
    {
      "id": 137296,
      "objectTypeAttributeId": 911,
      "objectAttributeValues": [
        {
          "status": {
            "id": 1,
            "name": "Active",
            "category": 1
          }
        }
      ],
      "objectId": 9036,
      "position": 18
    },

1 Ответ

0 голосов
/ 21 мая 2018

Можно ли этого достичь, используя только jq?

Да, jq был разработан именно для этого вида запросов.В вашем случае вы можете использовать any, select и if ... then ... else ... end, например:

if any(.[]; .objectTypeAttributeId == 911 and
            any(.objectAttributeValues[]; .status.name == "Active"))
then map(select(.objectTypeAttributeId == 887))
else "whatever"
end
...