2017-04-20 51 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(...)

相关问题