2012-06-05 20 views
13

Tengo el siguiente objeto JSON en Python:pitón anexar a la matriz de objeto JSON

jsonobj = { 
      "a": { 
       "b": { 
         "c": var1, 
         "d": var2, 
         "e": [], 
        }, 

       }, 
      } 

Y me gustaría añadir elementos clave-valor en la "e", pero no puedo averiguar la sintaxis eso. He intentado anexar con la siguiente, pero no sale bien con los soportes y cotizaciones:

jsobj["a"]["b"]["e"].append("'f':" + var3) 

En cambio, quiero "e" para ser el siguiente:

"e":[ 
     {"f":var3, "g":var4, "h":var5}, 
     {"f":var6, "g":var7, "h":var8}, 
    ] 

¿Alguien sabe la forma correcta de agregar a esta matriz json? Mucho aprecio.

+4

Técnicamente hablando, este no es un objeto JSON (aunque está formateado en el estilo JSON), es un dict de Python. No está "saliendo bien con corchetes y comillas" porque estás 'anexando()' ing una cadena al valor del diccionario '[]'. –

Respuesta

20
jsobj["a"]["b"]["e"].append({"f":var3, "g":var4, "h":var5}) 
jsobj["a"]["b"]["e"].append({"f":var6, "g":var7, "h":var8}) 
6

Basta con añadir el dictionnary como un objeto dictionnary no es una cadena:

jsobj["a"]["b"]["e"].append(dict(f=var3)) 

fuente completo:

var1 = 11 
var2 = 32 
jsonobj = {"a":{"b":{"c": var1, 
        "d": var2, 
        "e": [], 
        }, 
       }, 
      } 
var3 = 444 
jsonobj["a"]["b"]["e"].append(dict(f=var3)) 

jsonobj contendrá:

{'a': {'b': {'c': 11, 'd': 32, 'e': [{'f': 444}]}}} 
1
jsonobj["a"]["b"]["e"] += [{'f': var3, 'g' : var4, 'h': var5}, 
          {'f': var6, 'g' : var7, 'h': var8}] 
+1

Hay un método [extenso] (http://docs.python.org/tutorial/datastructures.html#more-on-lists) para eso. – DrTyrsa

Cuestiones relacionadas