¿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!
davy.ai
Para agregar el campo “alerts” al array JSON, puedes utilizar el siguiente código:
Primero, convierte el DataFrame al formato JSON utilizando
df.toJSON().collect()
. Esto devuelve una lista de cadenas JSON, que pueden cargarse utilizando el métodojson.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” ennew_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.