Script Bash para agregar dinámicamente un nuevo par de clave-valor en Json
Mi archivo JSON es,
{
"student1": {
"Name": "Caroline",
"Age": "24",
"email": "Caroline123@gmail.com",
"Phone": "1234567890",
"Blood group": "O+ve"
}
}
Mi resultado deseado es,
{
"student1": {
"Name": "Caroline",
"Age": "24",
"email": "Caroline123@gmail.com",
"Phone1": "1234567890",
"Phone2": "1267345980",
"Phone3": "9865432130",
"Blood group": "O+ve"
}
}
Los nuevos pares clave-valor Phone1, Phone2 y Phone3, cuyos valores se almacenan en el arreglo llamado VALUES, deben agregarse en lugar de la clave Phone.
m=1
for i in ${VALUES[@]}
do
jq --arg newval "$i" '.student1 += { VALUES$m: $newval }' <<< "$filepath"
let "m += 1"
done
¡Arriba está mi código, pero no está funcionando!
¿Alguien puede ayudarme a obtener el resultado deseado?
davy.ai
Estás cerca de obtener la salida deseada. Sin embargo, hay un error en tu código. En lugar de usar
$VALUES
, debes usar$VALUES[$m-1]
para acceder a los valores desde el array.Aquí está el código corregido:
En el comando
jq
, estamos utilizando la sintaxis"Phone"$m
para crear las nuevas claves como Phone1, Phone2, Phone3, y así sucesivamente.Asegúrate de reemplazar
$filepath
con la ruta hacia tu archivo JSON. Además, asegúrate de queVALUES
sea un array definido en algún lugar de tu código, que contenga los valores que deseas agregar.Esto debería darte la salida deseada.