2017-04-20 18 views
3

這應該很容易......我想重命名幾個鍵(最好用jq),不管我做什麼似乎都是錯誤的。下面的示例JSON:使用jq我怎樣才能用別的東西替換一個鍵的名字

] 
{ 
    "fruit": "strawberry", 
    "veg": "apple", 
    "worker": "gardener" 
} 
] 

我想重命名蔬菜關鍵fruit2(或例如,無論是最簡單的),也是工人關鍵工作。

我意識到這是可能的SED,但我試圖去抓住與JQ :)

回答

2

起初,一個有效的JSON應該是這樣的:

[ 
{ 
    "fruit": "strawberry", 
    "veg": "apple", 
    "worker": "gardener" 
} 
] 

使用以下JQ方法:

jq '[.[] | .["fruit2"] = .veg | .["job"] = .worker | del(.veg, .worker)]' file 

輸出:

[ 
    { 
    "fruit": "strawberry", 
    "fruit2": "apple", 
    "job": "gardener" 
    } 
] 
+0

完美,這適合我:) – user3229731

+0

@ user3 229731,不客氣 – RomanPerekhrest

2

的關鍵(:-)是with_entries。例如,給一個對象:

with_entries(if .key == "veg" then .key = "fruit2" else . end) 

在你的情況,因爲你有對象的數組,你可以換到上述情況map(...)

相關問題