Analisi Python JSON Una semplice guida
JSON (corrisponde a “Notazione oggetto JavaScript”) è un formato basato su testo che facilita lo scambio di dati tra diverse applicazioni. Ad esempio, un'applicazione scritta in C ++ Come correggere gli errori di runtime di Visual C ++ di Windows Come correggere gli errori di runtime di Visual C ++ di Windows Gli errori di Visual C ++ sono un problema comune per gli utenti di Windows. Ma sai come risolverli? Leggi altro in esecuzione su Windows può facilmente scambiare dati JSON con un'applicazione scritta in python e in esecuzione su Linux. La sua semplicità e flessibilità hanno portato a un utilizzo diffuso negli ultimi anni, soprattutto in riferimento ai precedenti formati basati su XML.
Sono disponibili librerie e toolkit per analizzare e generare JSON da quasi qualsiasi lingua e ambiente. Questo articolo si concentra su metodi e problemi derivanti dall'elaborazione di JSON usando python.
Alcuni esempi JSON
L'entità JSON più comune che incontrerai è un oggetto: un insieme di mappature chiave-valore nel formato mostrato di seguito.
person.json:
"firstName": "Alice", "lastName": "Hall", "age": 35
Ecco come è possibile rappresentare una serie di oggetti. In questa rappresentazione, ogni elemento dell'array è un oggetto. Quello che segue è un esempio di stipendi dei giocatori di baseball.
salaries.json:
["year": 1985, "teamId": "ATL", "leagueId": "NL", "playerId": "barkele01", "stipendio": 870000, "anno": 1985, "teamId": "ATL", "leagueId": "NL", "playerId": "bedrost01", "stipendio": 550000]
Naturalmente, puoi rappresentare anche una serie di scalari. Sembra questo:
["ciao", "mondo", 35]
Parsing JSON in Python
Python Come ottenere Python e JavaScript per comunicare usando JSON Come ottenere Python e JavaScript per comunicare usando JSON Oggi ti mostrerò come usare JSON per inviare dati da JavaScript a Python. Tratterò su come configurare un server web, insieme a tutto il codice che ti serve. Ulteriori informazioni fornisce il jSON modulo che può essere usato sia per analizzare JSON, sia per generare JSON da oggetti e liste python.
Il seguente frammento di codice mostra come aprire un file JSON e caricare i dati in una variabile.
importare json con open ('sample.json', 'r') come fp: obj = json.load (fp)
Quando hai una stringa contenente i dati JSON, puoi convertirla in un oggetto python (o in un elenco) con il seguente:
obj = json.loads ("" "" firstName ":" Alice "," lastName ":" Hall "," age ": 35" "")
Per analizzare un URL JSON, puoi creare un oggetto URL usando urllib2 e usare json.load () come prima.
import urllib2, json url = urllib2.urlopen ('http://site.com/sample.json') obj = json.load (url)
Gestione degli errori
Quando il JSON ha errori, otterrai un ValueError. Puoi gestirlo e intraprendere azioni correttive se necessario.
try: obj = json.loads ("" "" firstName ":" Alice "," lastName: "Hall", "age": 35 "" ") eccetto ValueError: print" errore durante il caricamento di JSON "
Parsing JSON dalla riga di comando
A volte, è utile analizzare JSON usando la linea di comando di python, forse per controllare gli errori o ottenere un output ben rientrato.
cat glossary.json # prints "glossary": "GlossDiv": "GlossList": "GlossEntry": "GlossDef": "GlossSeeAlso": ["GML", "XML"], "para": "Un linguaggio di meta-markup, utilizzato per creare linguaggi di markup come DocBook.", "GlossSee": "markup", "Acronimo": "SGML", "GlossTerm": "Standard Markup Markup Language", "Abbrev": "ISO 8879: 1986", "SortAs": "SGML", "ID": "SGML", "titolo": "S", "titolo": "esempio glossario"
Per ottenere l'output rientrato dal file JSON precedente, puoi eseguire le seguenti operazioni:
python -mjson.tool glossary.json # prints "glossary": "GlossDiv": "GlossList": "GlossEntry": "Abbrev": "ISO 8879: 1986", "Acronimo": "SGML", "GlossDef": "GlossSeeAlso": ["GML", "XML"], "para": "Un linguaggio di meta-markup, utilizzato per creare linguaggi di markup come DocBook." , "GlossSee": "markup", "GlossTerm": "Standard Generalized Markup Language", "ID": "SGML", "SortAs": "SGML", "title": "S", "titolo ":" esempio glossario "
Ed ecco come caricare l'oggetto JSON in python ed estrarre solo ciò di cui hai bisogno.
python -c 'import json; fp = open ("glossary.json", "r"); obj = json.load (fp); fp.close (); print obj ["glossary"] ["title"] '# stampa il glossario di esempio
Accesso ai dati
Dopo aver caricato i dati JSON in una variabile python, puoi accedere ai dati come faresti con qualsiasi python dict (o elenco a seconda del caso). Ad esempio, i dati JSON sopra indicati sono accessibili come segue:
firstName = obj ["firstName"] lastName = obj ["Hall"] age = obj ["age"]
Tipi di dati
I tipi di dati vengono determinati automaticamente dai dati. Nota che età viene analizzato come un numero intero.
tipo di stampa (obj ["firstName"]), type (obj ["lastName"]), type (obj ["age"]) # prints
La seguente tabella di conversione viene utilizzata per convertire da JSON a Python.
Parsing JSON Utilizzo di una classe personalizzata
Per impostazione predefinita, un oggetto JSON viene analizzato in un python dict. A volte potresti avere la necessità di creare automaticamente un oggetto della tua classe dai dati JSON. Puoi farlo specificando un object_hook funzione che gestisce la conversione. L'esempio seguente mostra come.
Ecco una classe personalizzata che rappresenta un Persona.
class Persona: def __init __ (self, firstName, lastName, age): self.firstName = firstName self.lastName = lastName self.age = age def __str __ (self): return '"firstName" = "0", "lastName" = "1", "age" = 2. formato (self.firstName, self.lastName, self.age)
Un'istanza di questa classe viene creata passando gli argomenti richiesti come segue:
person = Person ("Crystal", "Newell", 27)
Per utilizzare questa classe per creare istanze durante l'analisi di JSON, è necessario un object_hook funzione definita come segue: la funzione riceve un python dict e restituisce un oggetto della classe corretta.
def obj_creator (d): return Person (d ['firstName'], d ['lastName'], d ['age']])
Ora puoi usare questo object_hook funzione quando si richiama il parser JSON.
con open ('sample.json', 'r') come fp: obj = json.load (fp, object_hook = obj_creator) print obj # prints "firstName" = "Alice", "lastName" = "Hall", " età "= 35
Esempi di utilizzo JSON
JSON è estremamente popolare al giorno d'oggi. Molti siti Web e applicazioni SaaS (Software As A Service) offrono output JSON che possono essere utilizzati direttamente dalle applicazioni. Alcuni di quelli disponibili pubblicamente includono:
- StackOverflow / StackExchange. Ecco un URL che restituisce un elenco di domande in formato JSON.
- GitHub offre un'API JSON su https://developer.github.com/v3/.
- Ed ecco l'API di Flickr: https://developer.yahoo.com/flickr/.
Stai usando JSON per consumare o fornire servizi? E stai usando python nel tuo stack tecnologico? Spiega nei commenti qui sotto.
Scopri di più su: Programming, Python.