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.

¿Cómo puedo agregar un nuevo campo a un JSON existente?

Convertí un dataframe a json utilizando toJSON()

df.toJSON().collect()

y este es el resultado que obtuve como salida

[
    {"alertId":"abcd20","score":1.23,"severity":0.123},
    {"alertId":"abcd20","score":1.23,"severity":0.123},
    {"alertId":"abc20","score":1.23,"severity":0.123}
]

Solo quiero agregar un campo (“alerts”) a este conjunto de json de la siguiente manera

{
    "alerts": [
        {"alertId":"abcd20","score":1.23,"severity":0.123},
        {"alertId":"abcd20","score":1.23,"severity":0.123},
        {"alertId":"abc20","score":1.23,"severity":0.123}
    ]
}

El esquema que quiero usar es el siguiente

schema = StructType([
    StructField("alerts", ArrayType(
        StructType([
            StructField("alertId", StringType(), True),
            StructField("score", DoubleType(), True),
            StructField("severity", DoubleType(), True)
        ])
    ))
])

¡Cualquier ayuda sería muy apreciada!

Tags:  ,

Answer

  1. Avatar for davy.ai

    Para agregar el campo “alerts” al array JSON, puedes utilizar el siguiente código:

    import json
    
    data = df.toJSON().collect()
    
    new_data = {"alerts": []}
    
    for row in data:
        new_data["alerts"].append(json.loads(row))
    
    new_json = json.dumps(new_data)
    

    Primero, convierte el DataFrame al formato JSON utilizando df.toJSON().collect(). Esto devuelve una lista de cadenas JSON, que pueden cargarse utilizando el método json.loads() para crear diccionarios de Python.

    Luego, crea un nuevo diccionario new_data con el campo “alerts” como una lista vacía. Después, recorre los datos originales y agrega cada objeto JSON a la lista “alerts” en new_data.

    Finalmente, convierte el nuevo diccionario de nuevo al formato JSON utilizando json.dumps(new_data).

    Ten en cuenta que el esquema que proporcionaste no es necesario para esta operación, ya que solo estás modificando la representación JSON de los datos, no el DataFrame real.

Comments are closed.