valores unir objects elementos array agregar json jq

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)}''