2013-11-15 24 views
5

Ho dati JSON come una serie di dizionari che viene come carico utile della richiesta.Come analizzare json con ijson e python

[ 
    { "Field1": 1, "Feld2": "5" }, 
    { "Field1": 3, "Feld2": "6" } 
] 

Ho provato ijson.items(f, '') che produce l'intero oggetto JSON come un unico elemento. C'è un modo per iterare gli elementi all'interno dell'array uno per uno usando ijson?

Ecco il codice di esempio che ho provato che sta restituendo il JSON come un singolo oggetto.

f = open("metadatam1.json") 
objs = ijson.items(f, '') 
for o in objs: 
    print str(o) + "\n" 

[{'Feld2': u'5', 'Field1': 1}, {'Feld2': u'6', 'Field1': 3}] 
+1

Si prega di aggiungere il codice, dimostrando come "cede intero json come un singolo oggetto" – shx2

risposta

19

Io non sono molto familiare con ijson, ma la lettura di alcuni del suo codice sembra chiamare items con un prefisso di "item" dovrebbe lavorare per ottenere gli elementi dell'array, piuttosto che l'oggetto di livello superiore:

for item in ijson.items(f, "item"): 
    # do stuff with the item dict 
+0

Grazie che ha funzionato! – Overture

+0

Questo sputa solo il seguente errore: '' 'TypeError: can not concat byte to str''' – Jeremy

+0

@JeremyCraigMartinez: Non c'è modo che io possa indovinare da dove provenga quell'eccezione con solo il testo di eccezione. Ti suggerisco di fare una tua domanda, includendo il tuo codice e un traceback completo. – Blckknght