it
English
Español
中國人
Tiếng Việt
Deutsch
Українська
Português
Français
भारतीय
Türkçe
한국인
Indonesia
Polski JSON è l'acronimo di JavaScript Object Notation. Non solo è leggero, ma anche facile da leggere e scrivere per gli esseri umani. Allo stesso modo, le macchine lo trovano semplice da analizzare e generare. Il parsing è fondamentale quando si ha a che fare con contenuti provenienti da API, file di configurazione o altre fonti di informazioni memorizzate per qualsiasi sviluppatore Python. Questo articolo illustra le basi dell'analisi di JSON utilizzando il modulo Python, compreso l'uso di json.dump python per salvare i contenuti.
JSON struttura i dettagli in coppie chiave-valore. Ecco un esempio di base di un oggetto:
{
"name": "Alice",
"age": 30,
"is_student": false,
"courses": ["Math", "Science"]
}
Questo esempio di parsing json in Python contiene elementi comuni: una stringa, un numero, un booleano e un array. Familiarizzare con questa struttura rende molto più facile lavorare in Python.
Implementando Python, è possibile analizzare facilmente le stringhe json utilizzando il modulo integrato in Python. Questo modulo include metodi come json.loads() per leggere da una stringa e json.load() per leggere da un file. Al contrario, json.dumps() e json.dump Python sono utilizzati per scrivere informazioni rispettivamente su una stringa e su un file.
Vediamo come leggere i dati JSON, di cui parleremo in seguito.
Se si vuole leggere json in python, usare json.loads() per analizzare una stringa e convertirla in un oggetto python:
import json
json_string = '{"name": "Alice", "age": 30, "is_student": false, "courses": ["Math", "Science"]}'
data = json.loads(json_string)
print(data)
Uscita:
Per estrarre informazioni da un file, utilizzare questo metodo: json.load() e aprire un file json in python:
import json
with open('data.json', 'r') as file:
data = json.load(file)
print(data)
Uscita:
Prima di scrivere, spesso è necessario leggere o caricare informazioni esistenti: è qui che il metodo python load json file diventa utile. Una volta che le informazioni sono state caricate correttamente, è possibile manipolarle e scriverle in vari formati.
Per scrivere le informazioni in una stringa, usare il metodo json.dumps di Python:
import json
data = {
"name": "Alice",
"age": 30,
"is_student": False,
"courses": ["Math", "Science"]
}
json_string = json.dumps(data)
print(json_string)
Uscita:
Per scrivere i dettagli di questo file, utilizzare il metodo json.dump di Python:
import json
data = {
"name": "Alice",
"age": 30,
"is_student": False,
"courses": ["Math", "Science"]
}
with open('data.json', 'w') as file:
json.dump(data, file)
Gli oggetti annidati sono comuni quando si lavora con strutture informative più complesse, che possono gestire facilmente.
import json
nested_json_string = '''
{
"name": "Alice",
"age": 30,
"is_student": false,
"courses": ["Math", "Science"],
"address": {
"street": "123 Main St",
"city": "Wonderland"
}
}
'''
data = json.loads(nested_json_string)
print(data['address']['city'])
Uscita:
Il linguaggio non può trasformare automaticamente tutti gli oggetti personalizzati in JSON. In questi casi, è necessario creare un codificatore personalizzato.
import json
class Student:
def __init__(self, name, age, is_student):
self.name = name
self.age = age
self.is_student = is_student
class StudentEncoder(json.JSONEncoder):
def default(self, obj):
if isinstance(obj, Student):
return obj.__dict__
return super().default(obj)
student = Student("Alice", 30, False)
json_string = json.dumps(student, cls=StudentEncoder)
print(json_string)
Uscita:
Per deserializzare gli oggetti personalizzati, è necessario implementare un decodificatore personalizzato che sappia come gestirli.
import json
class Student:
def __init__(self, name, age, is_student):
self.name = name
self.age = age
self.is_student = is_student
def student_decoder(dct):
return Student(dct['name'], dct['age'], dct['is_student'])
json_string = '{"name": "Alice", "age": 30, "is_student": false}'
student = json.loads(json_string, object_hook=student_decoder)
print(student.name)
Uscita:
Lavorare con dati dettagliati può portare a diversi errori comuni, in particolare quando si analizza, si genera o si accede a contenuti strutturati. L'uso di un parser json python affidabile può aiutare a identificare e risolvere questi problemi in modo più efficiente. Ecco alcuni dei più comuni:
Un errore comune quando si analizza un file json è quello di incontrare un formato non valido. Richiede l'uso di doppi apici intorno alle chiavi e ai valori delle stringhe e il corretto annidamento di parentesi e graffe.
import json
invalid_json_string = "{'name': 'Alice', 'age': 30, 'is_student': False}"
try:
data = json.loads(invalid_json_string)
except json.JSONDecodeError as e:
print(f"Invalid JSON format: {e}")
Uscita:
A volte, il contenuto non include tutte le chiavi previste. L'uso del metodo get() consente di gestire in modo sicuro le chiavi mancanti, restituendo un valore predefinito invece di generare un errore.
import json
json_string = '{"name": "Alice", "age": 30}'
data = json.loads(json_string)
is_student = data.get('is_student', False)
print(is_student)import json
json_string = '{"name": "Alice", "age": 30}'
data = json.loads(json_string)
is_student = data.get('is_student', False)
print(is_student)
Usare il modulo pdb per impostare i punti di interruzione ed eseguire il debug del codice di parsing.
import json
import pdb
json_string = '{"name": "Alice", "age": 30, "is_student": false}'
pdb.set_trace()
data = json.loads(json_string)
print(data)
Il web scraping di solito comporta il recupero di contenuti da servizi che restituiscono le informazioni ottenute. Di seguito è riportato un esempio che utilizza la libreria delle richieste insieme all'endpoint https://httpbin.org/anything.
Prima di iniziare, verificare che sia stato installato il pacchetto requests:
pip install requests
Quando si lavora con contenuti strutturati, si può usare la libreria requests per semplificare le cose. È sufficiente inviare una richiesta GET e l'URL tramite requests.get(url). Poi, si può analizzare la risposta con response.json(). Da qui, è semplice accedere a informazioni specifiche come le intestazioni, l'interprete, l'origine o l'URL della richiesta e stamparle secondo le necessità.
Il codice contiene una forte gestione degli errori; cattura json.JSONDecodeError quando si verifica un errore di decodifica e KeyError quando una chiave specifica è assente, rendendo di conseguenza il programma protetto da crash "senza dati". Questa robustezza del codice gli consente di gestire perfettamente le attività di web scraping reali.
import requests
import json
url = 'https://httpbin.org/anything'
response = requests.get(url)
try:
data = response.json()
# Estrazione di dati specifici dalla risposta JSON
headers = data['headers']
user_agent = headers.get('User-Agent', 'N/A')
origin = data.get('origin', 'N/A')
url = data.get('url', 'N/A')
print(f"User Agent: {user_agent}")
print(f"Origin: {origin}")
print(f"URL: {url}")
except json.JSONDecodeError:
print("Error decoding JSON response")
except KeyError as e:
print(f"Key error: {e} not found in the JSON response")
Ogni sviluppatore deve sapere come analizzare un file json in python. Con il modulo e il modo migliore per farlo evidenziato da questo manuale, sarete in grado di leggere, scrivere e fare il debug abbastanza velocemente. Ciò significa testare regolarmente il codice e utilizzare gli strumenti giusti e le funzionalità più recenti per ottenere prestazioni migliori. Questa guida si concentra sul parsing dei dati json in python per aiutarvi a padroneggiare questi compiti in modo efficiente.
Quando si esegue il web scraping, il parsing diventa essenziale, poiché i contenuti delle API web sono spesso in questo formato. Essere abili nell'elaborazione e nella manipolazione consente di estrarre informazioni preziose da una varietà di fonti in modo efficiente.
Il parsing è un'abilità fondamentale per qualsiasi sviluppatore che lavori con API web, file di configurazione o fonti esterne. La gestione delle informazioni, sia che si tratti di leggere da una stringa, da un file, di scrivere un output strutturato o di gestire oggetti annidati e personalizzati, è semplificata dal modulo integrato in Python. Gli sviluppatori possono sbloccare i metodi json.load(), json.loads(), json.dump(), json.dumps() di Python e imparare a gestire i problemi più comuni, a implementare codificatori o decodificatori personalizzati e a creare applicazioni su misura per l'interazione con le informazioni che siano robuste e affidabili. Dato che questo formato è uno standard web per lo scambio di informazioni, queste competenze sono preziose per lo scraping, la manipolazione dei contenuti e l'integrazione di più servizi tramite API. L'uso di un semplice codice python per leggere i file json rende l'analisi di un file json in python accessibile a qualsiasi progetto, mentre json.dump python consente di salvare il materiale in modo efficiente.
Commenti: 0