2012-06-05 3 views
13

Ho il seguente oggetto JSON in pitone:pitone aggiungere alla matrice in oggetto json

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

       }, 
      } 

E desidero aggiungere elementi valori-chiave nella "e", ma non riesco a capire la sintassi per esso. Ho provato aggiungendo con il seguente, ma non viene fuori proprio con le staffe e le citazioni:

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

Invece, voglio "e" per essere la seguente:

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

Qualcuno sa il modo giusto per aggiungere a questo array json? Molto apprezzamento

+4

Tecnicamente parlando, questo non è un oggetto JSON (anche se è formattato in stile JSON), è un dittato python. Non sta "uscendo a destra con parentesi e virgolette" perché tu stai "append()" inserendo una stringa nel valore del dizionario '[]'. –

risposta

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 aggiungere il Dictionnary come oggetto Dictionnary non una stringa:

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

completa fonte:

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

jsonobj conterrà:

{'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

C'è un metodo [estendi] (http://docs.python.org/tutorial/datastructures.html#more-on-lists) per quello. – DrTyrsa