Sto prelevando i dati JSON da un'API. Il mio script memorizzerà questi dati e aggiungerà informazioni su questi dati a un dizionario.
Per memorizzare i dati JSON, sto pensando di utilizzare:
with open("data.json", "w") as f:
json.dump(data, f)
Quale sarebbe un modo appropriato per memorizzare il dizionario? Sarebbe opportuno convertire il dict in formato json con
json_str = json.dumps(dict1)
e salvarlo come sopra?
risposte:
4 per risposta № 1Dovresti salvare i dati JSON in un Python list
o a dict
, a seconda della struttura dei dati JSON.
A partire dal http://www.json.org/:
JSON è costruito su due strutture:
- Una raccolta di coppie nome / valore. In varie lingue, questo è realizzato come oggetto, record, struct, dizionario, tabella hash, con chiave elenco o array associativo.
- Un elenco ordinato di valori. Nella maggior parte lingue, questo è realizzato come una matrice, vettore, lista o sequenza.
Il json
la libreria è ciò che viene comunemente usato per caricare i dati JSON e memorizzarli in un oggetto Python load
il metodo restituirà (in modo ricorsivo) un Python elenco se i dati JSON sono simili [...]
e un Python dict se i dati JSON sono simili {...}
.
Per leggere un file JSON contenente a {...}
e salvare il suo contenuto in una struttura dati del dizionario usa:
>>> with open("data.json", "r") as f:
... data = json.load(f)
...
>>> type(data)
<type "dict">
Se il file contiene un elenco JSON [...]
poi:
>>> type(data)
<type "list">
Allo stesso modo quando si leggono i dati JSON da un URL:
>>> response = urllib2.urlopen(URL)
>>> data = json.load(response)
Puoi sempre convertire una lista in un dizionario per esempio in questo modo:
>>> dataD = dict([i,data[i]] for i in xrange(len(data)))
In tal modo, tuttavia, si perdono le informazioni sull'ordine fornite dalla struttura dell'array JSON.
1 per risposta № 2
Di solito io uso dicts per la memorizzazione dei dati e la conversione da / a JSON solo per trasferire i dati via web. JSON non è un tipo nativo per Python, quindi sarebbe meglio lavorare con i tipi nativi di Python.