Как использовать jq, чтобы не показывать данные json, если поле является пустым массивом? - PullRequest
0 голосов
/ 12 марта 2020

У меня есть некоторые данные github в формате json, например, так:

{
  "id": 18535,
  "node_id": "MDExhN0M8877883",
  "number": 747,
  "state": "closed",
  "locked": false,
  "title": "Generate cordova protos",
  "user": {
    "login": "Superhacker"
  },
  "body": "Simple PR",
  "created_at": "2018-05-02T07:43:39Z",
  "updated_at": "2018-07-21T02:09:14Z",
  "closed_at": "2018-05-02T07:54:56Z",
  "merge_commit_sha": "4bf92c0332c66999999b6c0a766e",
  "assignee": null,
  "assignees": [],
  "requested_reviewers": [],
  "requested_teams": [],
  "labels": [],
  "milestone": null,
  "draft": false,
  "author_association": "CONTRIBUTOR"
}

Я не хочу показывать строки json, когда requested_reviewers пусто.

Я пробовал несколько способов

  1. echo <the json string above> | jq '.requested_reviewers | select(. != "")

Показывает []

echo <the json string above> | jq '.requested_reviewers | select(! empty)

Произошла синтаксическая ошибка.

echo <the json string above> | jq '.requested_reviewers | select(. != empty)

Теперь jq не печатает ничего, как я хотел.

Но если я кормлю json непустым requested_reviewers, это также ничего не печатает.

Кроме того, я не хочу просто распечатывать поле. Я хочу видеть всю строку json.

Как мне достичь своей цели с помощью jq?

Ответы [ 2 ]

3 голосов
/ 12 марта 2020
select(.requested_reviewers != [])
1 голос
/ 12 марта 2020
jq 'select(.requested_reviewers | length > 0)'

https://jqplay.org/s/Cw-nbWwmjz

...