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.

Generar archivos CSV a partir de un JSON

Desafortunadamente, tengo dificultades considerable para generar tres archivos csv a partir de un formato json. Tal vez alguien tenga una buena sugerencia de cómo podríamos hacer esto. Gracias.

Aquí está la salida. Dentro de “dropped1” y “dropped2” puede haber varias direcciones diferentes y múltiples.

{
  "result": {
    "found": 0,
    "dropped1": {
      "address10": 1140
    },
    "rates": {
      "total": {
        "1min": 3579,
        "5min": 1593,
        "15min": 5312,
        "60min": 1328
      },
      "dropped2": {
        "address20": {
          "1min": 9139,
          "5min": 8355,
          "15min": 2785,
          "60min": 8196
        }
      }
    },
    "connections": 1
  },
  "id": "whatever",
  "jsonrpc": "2.0"
}

Los 3 archivos csv deberían mostrarse de la siguiente manera:

address10,1140

total,3579,1593,5312,1328

address20,9139,8355,2785,8196
Tags:  , ,

Answer

  1. Avatar for davy.ai

    Para generar los tres archivos CSV a partir del formato JSON dado, puedes utilizar una herramienta como jq. Aquí tienes lo que puedes hacer:

    1. Guarda el JSON en un archivo, por ejemplo input.json.
    2. Ejecuta los siguientes comandos en la terminal:
    # Para address10
    jq -r '.result.dropped1 | to_entries | map("\(.key),\(.value)") | .[]' input.json > address10.csv
    
    # Para total
    jq -r '.result.rates.total | to_entries | map("\(.key),\(.value)") | .[]' input.json > total.csv
    
    # Para address20
    jq -r '.result.rates.dropped2 | to_entries | .[] | "\(.key),\(.value | to_entries | map(.value))"' input.json > address20.csv
    

    Los comandos anteriores utilizan jq para extraer los datos requeridos del JSON y escribirlos en sus respectivos archivos CSV.

    • Para address10, extrae el objeto dropped1, lo convierte en un array de pares clave-valor y los mapea a una cadena con , como separador. Luego, esta cadena se escribe en un archivo llamado address10.csv utilizando la redirección >.
    • Para total, extrae el objeto total anidado dentro del objeto rates, lo convierte en un array de pares clave-valor y los mapea a una cadena con , como separador. Luego, esta cadena se escribe en un archivo llamado total.csv utilizando la redirección >.

    • Para address20, extrae el objeto dropped2 anidado dentro del objeto rates, lo convierte en un array de pares clave-valor, mapea el objeto value a un array de sus valores y los une con , como separador. Luego, esta cadena se escribe en un archivo llamado address20.csv utilizando la redirección >.

    Ten en cuenta que se usa la opción -r para mostrar cadenas sin comillas.

    Estos comandos deberían funcionar para el formato JSON de entrada dado y generar los tres archivos CSV en la forma requerida.

Comments are closed.