Json
使用jq同時獲取欄位和嵌套欄位
我試圖從 JIRA API 中獲取我需要的兩個屬性。給定以下對 JQ 的輸入:
{ "expand": "names,schema", "startAt": 0, "maxResults": 50, "total": 1, "issues": [ { "expand": "operations,versionedRepresentations,editmeta,changelog,renderedFields", "id": "73270", "key": "RM-111", "fields": { "statuscategorychangedate": "2020-09-29T15:12:18.837+0100", "lastViewed": "2020-09-30T09:25:38.846+0100", "summary": "6.6.0" } } ] }
我想得到以下輸出:
RM-111 6.6.0
我可以單獨獲取它們:
> cat rm111.json | jq -r '.issues[] | .key' RM-111 > cat rm111.json | jq -r '.issues[] | .fields.summary' 6.6.0
我可以用新行分隔它們:
> cat rm111.json | jq -r '.issues[] | .key,.fields.summary' RM-111 6.6.0
但是以下(應該給出我實際需要的格式)不起作用,我不知道為什麼:
> cat rm111.json | jq -r '.issues[] | .key .fields.summary' jq: error (at <stdin>:18): Cannot index string with string "fields"
我需要迭代問題
$$ $$因為可能不止此範例中顯示的一個。
作為製表符分隔值的列表:為每個值創建一個所需值的數組
issue[]
並將其傳遞給@tsv
.$ jq -r '.issues[] | [ .key, .fields.summary ] | @tsv' file.json RM-111 6.6.0
作為具有由空格分隔的兩個值的字元串:為每個值創建一個雙引號字元串,
issue[]
並用於\(...)
插入字元串中的值。$ jq -r '.issues[] | "\(.key) \(.fields.summary)"' file.json RM-111 6.6.0
最後兩個命令的問題是第一個命令先獲取
.key
,然後.fields.summary
. 這兩條數據將在不同的行上輸出。最後一個命令嘗試提取
.key.fields.summary
不存在的 。