Saltar al contenido

¿Cómo fusionar dos cadenas json en Python?

Solución:

Suponiendo que ayb son los diccionarios que desea fusionar:

c = {key: value for (key, value) in (a.items() + b.items())}

Para convertir su cadena a un diccionario de Python, use lo siguiente:

import json
my_dict = json.loads(json_str)

Actualización: código completo usando instrumentos de cuerda:

# test cases for jsonStringA and jsonStringB according to your data input
jsonStringA = '{"error_1395946244342":"valueA","error_1395952003":"valueB"}'
jsonStringB = '{"error_%d":"Error Occured on machine %s in datacenter %s on the %s of process %s"}' % (timestamp_number, host_info, local_dc, step, c)

# now we have two json STRINGS
import json
dictA = json.loads(jsonStringA)
dictB = json.loads(jsonStringB)

merged_dict = {key: value for (key, value) in (dictA.items() + dictB.items())}

# string dump of the merged dict
jsonString_merged = json.dumps(merged_dict)

Pero debo decir que, en general, lo que está tratando de hacer no es la mejor práctica. Lea un poco sobre los diccionarios de Python.


Solución alternativa:

jsonStringA = get_my_value_as_string_from_somewhere()
errors_dict = json.loads(jsonStringA)

new_error_str = "Error Ocurred in datacenter %s blah for step %s blah" % (datacenter, step)
new_error_key = "error_%d" % (timestamp_number)

errors_dict[new_error_key] = new_error_str

# and if I want to export it somewhere I use the following
write_my_dict_to_a_file_as_string(json.dumps(errors_dict))

Y, de hecho, puede evitar todos estos si solo usa una matriz para contener todos sus errores.

A partir de Python 3.5, puede fusionar dos dictados con:

merged = {**dictA, **dictB}

(https://www.python.org/dev/peps/pep-0448/)

Entonces:

jsonMerged = {**json.loads(jsonStringA), **json.loads(jsonStringB)}
asString = json.dumps(jsonMerged)

etc.

Puede cargar ambas cadenas json en los diccionarios de Python y luego combinarlas. Esto solo funcionará si hay claves únicas en cada cadena json.

import json

a = json.loads(jsonStringA)
b = json.loads(jsonStringB)
c = dict(a.items() + b.items())
# or c =  dict(a, **b)
¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *