es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

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?

Tags:  ,

Answer

  1. Avatar for 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:

    m=1
    for i in "${VALUES[@]}"
    do
      jq --arg newval "$i" '.student1 += {("Phone"$m): $newval}' <<< "$filepath"
      let "m += 1"
    done
    

    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 que VALUES 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.

Comments are closed.