增量索引我這樣一個JSON有:如何創建與JQ
[
{"data":"a"},
{"data":"b"},
{"data":"c"}
]
使用JQ我想添加一個遞增ID字段這樣的:
[
{"data":"a","id":"xx_1"},
{"data":"b","id":"xx_2"},
{"data":"c","id":"xx_3"}
]
我不能似乎讓他對那個jq命令,任何人?
EDIT 我需要做此使用bash命令
增量索引我這樣一個JSON有:如何創建與JQ
[
{"data":"a"},
{"data":"b"},
{"data":"c"}
]
使用JQ我想添加一個遞增ID字段這樣的:
[
{"data":"a","id":"xx_1"},
{"data":"b","id":"xx_2"},
{"data":"c","id":"xx_3"}
]
我不能似乎讓他對那個jq命令,任何人?
EDIT 我需要做此使用bash命令
這裏有一種方法:
to_entries | map((.value.id = "xx_\(1+.key)") | .value)
這裏的另一種方法,然而這需要JQ 1.5:
def add_id(prefix):
[ foreach .[] as $o (0;
. + 1;
$o + {"id": (prefix + tostring) }) ];
add_id("xx_")
實施例:
$ jq -c -f add_id.jq
[ {"data":"a"}, {"data":"b"}, {"data":"c"} ]
輸出:
[{"data":"a","id":"xx_1"},{"data":"b","id":"xx_2"},{"data":"c","id":"xx_3"}]
第三種方法是使用transpose
:
def add_id(prefix):
[ ., [ range(0;length) | {"id": (prefix + tostring) } ] ]
| transpose | map(add);
(如果你的JQ不具有轉/ 0,這是JQ定義可以很容易地發現,如通過谷歌搜索。)
var data=[
{"data":"a"},
{"data":"b"},
{"data":"c"}
];
var cnt=0;
data.map(function(data){
data.id="xx_"+cnt;
cnt++;
})
console.log(data);
對不起,我忘了提及我需要使用bash創建它......我將編輯 – UVRadiation
這裏有兩個解決方案。一個使用foreach,它在foreach狀態下持有一個計數器,同時遍歷輸入數組將數據收集回結果數組中。這與peak的add_id函數類似。
[
foreach .[] as $e (
0
; .+1
; $e + {"id":"xx_\(.)"}
)
]
和一個使用減少保持所述輸入陣列中的降低狀態,而遍歷數組索引,更新每個元素。
reduce range(0,length) as $i (
.
; .[$i].id = "xx_\($i+1)"
)
我覺得減少是這種情況下,簡單的一個。
好的!你搖滾! :) – hek2mgl
謝謝!很棒! – UVRadiation