Analisi Python JSON Una semplice guida

Analisi Python JSON Una semplice guida / Programmazione

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.