Come lavorare con i dati JSON usando Python

Questo tutorial mostra quanto sia facile usare il linguaggio di programmazione Python per lavorare con i dati JSON.

Prima di iniziare l'argomento, definiamo brevemente cosa intendiamo per JSON. Vediamo come lo definisce il sito web principale di JSON:

JSON (JavaScript Object Notation) è un leggero formato di scambio di dati. È facile per gli umani leggere e scrivere. È facile per le macchine analizzare e generare. Si basa su un sottoinsieme del linguaggio di programmazione JavaScript, Standard ECMA-262 3rd Edition - December 1999. JSON è un formato di testo che è completamente indipendente dalla lingua ma utilizza convenzioni familiari ai programmatori della famiglia di linguaggi C, tra cui C , C ++, C #, Java, JavaScript, Perl, Python e molti altri. Queste proprietà rendono JSON un linguaggio di interscambio dati ideale.

Pertanto, JSON è un modo semplice per creare e archiviare strutture di dati all'interno di JavaScript. Il motivo per cui si vede JavaScript nell'acronimo è dovuto al fatto che viene creato un oggetto JavaScript quando si memorizzano i dati con JSON. Ma non preoccuparti, non è necessario conoscere JavaScript per lavorare con i file JSON, piuttosto si tratta della sintassi JSON (formato) stessa.

In breve, JSON è un modo con cui memorizziamo e scambiamo dati, che viene realizzato attraverso la sua sintassi, ed è usato in molte applicazioni web. La cosa bella di JSON è che ha un formato leggibile dall'uomo, e questo potrebbe essere uno dei motivi per utilizzarlo nella trasmissione dei dati, oltre alla sua efficacia quando si lavora con le API.

Un esempio di dati in formato JSON è il seguente:

"name": "Frank", "age": 39, "isEmployed": true

In questo tutorial, ti mostrerò come usare Python per lavorare con i file JSON. Quindi iniziamo!

Python e JSON

Python semplifica il lavoro con i file JSON. Il modulo utilizzato per questo scopo è il jSON modulo. Questo modulo dovrebbe essere incluso (integrato) nell'installazione di Python, e quindi non è necessario installare alcun modulo esterno come abbiamo fatto quando si lavora con file PDF ed Excel, per esempio. L'unica cosa di cui hai bisogno per usare questo modulo è importarla:

importazione JSON

Ma, cosa fa il jSON biblioteca fare? Questa libreria analizza principalmente JSON da file o stringhe. Analizza anche JSON in un dizionario o lista in Python e viceversa, cioè convertendo un dizionario Python o un elenco in stringhe JSON.

JSON a Python

Leggere JSON significa convertire JSON in un valore Python (oggetto). Come accennato in precedenza, il jSON libreria analizza JSON in un dizionario o in un elenco in Python. Per fare ciò, usiamo il carichi () funzione (carica da una stringa), come segue:

import json jsonData = '"name": "Frank", "age": 39' jsonToPython = json.loads (jsonData)

Se vuoi vedere l'output, fai a stampa jsonToPython, nel qual caso otterrai il seguente risultato:

u'age ': 39, u'name': u'Frank '

Cioè, i dati vengono restituiti come dizionario Python (struttura dati dell'oggetto JSON). Quindi, sarà la dichiarazione stampa jsonToPython ['name'] restituire qualsiasi uscita? Vai avanti, provalo.

Python to JSON

Nella sezione precedente, abbiamo visto come convertire JSON in un valore Python (cioè il dizionario). In questa sezione, ti mostrerò come possiamo convertire (codificare) un valore Python in JSON.

Dì che abbiamo il seguente dizionario in Python:

import json pythonDictionary = 'name': 'Bob', 'age': 44, 'isEmployed': True dictionaryToJson = json.dumps (pythonDictionary)

Se noi dictionaryToJson stampa, otteniamo i seguenti dati JSON:

"age": 44, "isEmployed": true, "name": "Bob"

Quindi questo output è considerato la rappresentazione dei dati dell'oggetto (Dictionary). Il metodo discariche () era la chiave per tale operazione.

È importante notare a questo punto che JSON non può memorizzare tutti i tipi di oggetti Python, ma solo i seguenti tipi: Liste; dizionari; booleani; Numeri; Stringhe di caratteri; e nessuno. Pertanto, qualsiasi altro tipo deve essere convertito per poter essere memorizzato in JSON.

Diciamo che abbiamo la seguente classe:

class Employee (oggetto): def __init __ (self, name): self.name = name

Diciamo che abbiamo creato un nuovo oggetto Abder, come segue:

abder = Impiegato ('Abder')

E se volessimo convertire questo oggetto in JSON? Questo è json.dumps (Abder)? In questo caso, si otterrebbe un errore simile al seguente:

Traceback (ultima chiamata più recente): file "test.py", riga 8, in  abderJson = json.dumps (abder) File "/usr/local/Cellar/python/2.7.10_2/Framework/Python.framework/Versions/2.7/lib/python2.7/json/__init__.py", riga 243, in dump return _default_encoder.encode (obj) File "/usr/local/Cellar/python/2.7.10_2/Frameworks/Python.framework/Versions/2.7/lib/python2.7/json/encoder.py", riga 207, in encode chunks = self.iterencode (o, _one_shot = True) File "/usr/local/Cellar/python/2.7.10_2/Framework/Python.framework/Versions/2.7/lib/python2.7/json/encoder.py" , riga 270, in iterencode return _iterencode (o, 0) File "/usr/local/Cellar/python/2.7.10_2/Framework/Python.framework/Versions/2.7/lib/python2.7/json/encoder.py" , riga 184, in default raise TypeError (repr (o) + "non è serializzabile da JSON") TypeError: <__main__.Employee object at 0x10e74b750> non è serializzabile con JSON

Ma c'è una soluzione? Fortunatamente c'è. Mi piace la soluzione alternativa descritta sul sito Web Python Tips. Per risolvere questo problema, possiamo definire un metodo simile al seguente:

def jsonDefault (oggetto): oggetto restituito .__ dict__

Quindi codificare l'oggetto in JSON come segue:

jsonAbder = json.dumps (abder, default = jsonDefault)

Se tu stampa jsonAbder, dovresti ottenere il seguente risultato:

"nome": "Abder"

Ora abbiamo codificato un oggetto Python (Abder) in JSON.

Conclusione

Da questo tutorial, possiamo notare che Python continua a dimostrare non solo la sua capacità di lavorare con diverse applicazioni, ma anche la sua flessibilità per lavorare con diversi problemi mentre si lavora con un'applicazione, come abbiamo visto nell'ultima parte del tutorial.

Se vuoi saperne di più sul jSON modulo, è possibile visitare la pagina della documentazione.

Scopri JavaScript: la guida completa

Abbiamo creato una guida completa per aiutarti a imparare JavaScript, sia che tu stia appena iniziando come sviluppatore web o che desideri esplorare argomenti più avanzati.

Impara Python

Impara Python con la nostra guida completa al tutorial su Python, sia che tu stia appena iniziando o che sei un programmatore esperto che cerca di imparare nuove abilità.