JSON multilínea de Python y variables
¡Estoy intentando codificar un JSON algo grande en Python (v2.7) y tengo problemas para ingresar mis variables!
Como el JSON es de varias líneas y para mantener mi código ordenado, he decidido usar las comillas dobles triples para que se vea de la siguiente manera:
my_json = """{
"settings": {
"serial": "1",
"status": "2",
"ersion": "3"
},
"config": {
"active": "4",
"version": "5"
}
}"""
Codificar esto y generarlo funciona bien para mí, pero no estoy seguro de cómo puedo cambiar los números que tengo allí y reemplazarlos por cadenas variables. He intentado:
"settings": {
"serial": 'json_serial',
pero fue en vano. ¡Cualquier ayuda sería apreciada!
¿Por qué no lo conviertes en un diccionario y configuras variables y luego usas la biblioteca json para convertirlo en json?
import json
json_serial = "123"
my_json = {
'settings': {
"serial": json_serial,
"status": '2',
"ersion": '3',
},
'config': {
'active': '4',
'version': '5'
}
}
print(json.dumps(my_json))
Si insiste absolutamente en generar JSON con concatenación de cadenas (y, para ser claros, no debería hacerlo en absoluto), la única forma de estar completamente seguro de que su salida es JSON válida es generar las subcadenas que se sustituyen con un generador JSON. Eso es:
'''"settings" : {
"serial" : {serial},
"version" : {version}
}'''.format(serial=json.dumps("5"), version=json.dumps(1))
Pero no lo hagas. De verdad, de verdad que no. La respuesta de @davidejones es lo correcto para este escenario.