2017-04-20 6 views
3

이것은 충분히 쉬워야합니다 ... 나는 몇개의 키 (이상적으로는 jq)의 이름을 바꾸고 싶습니다. 아래의 예 JSON은 :jq 사용하기 어떻게 키의 이름을 다른 것으로 대체 할 수 있습니까?

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

나는 (쉬운 무엇이든 또는 예) fruit2에 채식 키와 작업에도 작업자의 키의 이름을 변경하고 싶습니다.

나는이 나오지도 가능하다 알지만 :-)이 with_entries입니다 (JQ :

답변

2

처음에는 유효한 JSON은 같아야합니다

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

출력 :

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

완벽한,이 나를 위해 일합니다 :) – user3229731

+0

@ user3 229731, 오신 것을 환영합니다. – RomanPerekhrest

2

키와 그립에 도착하는 것을 시도하고있다. 당신이 객체의 배열이 있기 때문에, 당신은 map(...)에 위의 포장 수, 귀하의 경우에는

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

: 예를 들어, 하나의 객체를 주어진.

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

를 사용하여 다음과 같은 JQ 접근 방식을 :