json - objects - unir dos arrays javascript
Campos Concat 2 en JSON usando jq (2)
Estoy usando jq
para reformar mi JSON
.
Cadena JSON:
{"channel": "youtube", "profile_type": "video", "member_key": "hello"}
Salida deseada:
{"channel" : "profile_type.youtube"}
Mi orden:
echo ''{"channel": "youtube", "profile_type": "video", "member_key": "hello"}'' | jq -c ''. | {channel: .profile_type + "." + .member_key}''
Sé que el siguiente comando concatena la cadena. Pero no está funcionando en la misma lógica que arriba:
echo ''{"channel": "youtube", "profile_type": "video", "member_key": "hello"}'' | jq -c ''.profile_type + "." + .member_key''
¿Cómo puedo lograr mi resultado utilizando SOLAMENTE jq?
Aquí hay una solución que utiliza la interpolación de cadenas como sugirió Jeff :
{channel: "/(.profile_type)./(.member_key)"}
p.ej
$ jq ''{channel: "/(.profile_type)./(.member_key)"}'' <<EOF
> {"channel": "youtube", "profile_type": "video", "member_key": "hello"}
> EOF
{
"channel": "video.hello"
}
La interpolación de cadenas funciona con la sintaxis /(foo)
(que es similar a una llamada shell $(foo)
).
Consulte el manual oficial de JQ .
Use paréntesis alrededor de su código de concatenación de cadenas:
echo ''{"channel": "youtube", "profile_type": "video", "member_key": "hello"}'' | jq ''{channel: (.profile_type + "." + .channel)}''