Concat 2 champs dans JSON en utilisant jq
j'utilise jq
pour la réforme de ma JSON
.
JSON String:
{"channel": "youtube", "profile_type": "video", "member_key": "hello"}
Voulu de sortie:
{"channel" : "profile_type.youtube"}
Ma commande:
echo '{"channel": "youtube", "profile_type": "video", "member_key": "hello"}' | jq -c '. | {channel: .profile_type + "." + .member_key}'
je sais que la commande ci-dessous concatène la chaîne. Mais il ne travaille pas dans la même logique que ci-dessus:
echo '{"channel": "youtube", "profile_type": "video", "member_key": "hello"}' | jq -c '.profile_type + "." + .member_key'
Comment puis-je atteindre mon résultat en utilisant seulement jq?
21
demandé sur
darthsidious
2016-06-08 21:56:43
2 réponses
Utilisez les parenthèses autour du code de concaténation de la chaîne:
echo '{"channel": "youtube", "profile_type": "video", "member_key": "hello"}' | jq '{channel: (.profile_type + "." + .channel)}'
26
répondu
Anthony Battaglia
2016-06-08 19:02:09
Voici une solution qui utilise l'interpolation de chaîne comme Jeff a suggéré:
{channel: "\(.profile_type).\(.member_key)"}
e.g.
$ jq '{channel: "\(.profile_type).\(.member_key)"}' <<EOF
> {"channel": "youtube", "profile_type": "video", "member_key": "hello"}
> EOF
{
"channel": "video.hello"
}
l'interpolation des chaînes de caractères fonctionne avec \(foo)
syntaxe (qui est similaire à un shell $(foo)
appel).
Voir l'officiel manuel JQ.
11
répondu
jq170727
2018-08-23 05:44:06