2017-04-20 7 views
3

Das sollte einfach genug sein ... Ich möchte ein paar Schlüssel (idealerweise mit jq) umbenennen, was auch immer ich tue scheint zu Fehler. Beispiel json unter:Mit jq wie kann ich den Namen eines Schlüssels durch etwas anderes ersetzen

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

Ich möchte die veg Schlüssel zum fruit2 umbenennen (oder Beispiel, was am einfachsten ist) und auch die Arbeiter Schlüssel zum Job.

Ich weiß, dies in sed möglich ist, aber ich versuche, in den Griff zu bekommen jq :)

Antwort

2

Zunächst sollte eine gültige JSON wie folgt aussehen:

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

Verwenden Sie den folgenden jq Ansatz:

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

Der Ausgang:

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

Perfect, diese funktioniert für mich :) – user3229731

+0

@ user3 229731, gern geschehen – RomanPerekhrest

2

Der Schlüssel (:-) with_entries ist. Zum Beispiel ein einzelnes Objekt gegeben:

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

In Ihrem Fall, da Sie ein Array von Objekten haben, können Sie die oben in map(...) wickeln konnte.

Verwandte Themen