Parser i walidator Pythona JSON
Dowiedz się, jak czytać, sprawdzać poprawność, modyfikować i serializować kod JSON w języku Python. Opanuj wbudowaną bibliotekę json za pomocą realistycznych przykładów.
Przegląd
JSON (JavaScript Object Notation) to standardowy format wymiany danych w Internecie. Python udostępnia potężny wbudowany moduł o nazwie `json`, który tłumaczy ciągi znaków JSON na słowniki Pythona i odwrotnie.
Moduł udostępnia dwa główne zestawy operacji: „loads” i „dumps” do bezpośredniej obsługi ciągów JSON oraz „load” i „dump” do zapisywania lub odczytywania danych bezpośrednio ze strumieni plików.
Podczas pracy z JSON obsługa błędów ma kluczowe znaczenie. Python zgłasza błąd `json.JSONDecodeError`, jeśli składnia łańcucha jest zepsuta, co jest niezbędne do wyłapania podczas pobierania ładunków z publicznych interfejsów API.
Dane wyjściowe kodu i wykonania
Skrypt demonstrujący sprawdzanie poprawności ciągu JSON, analizowanie dyktowania, modyfikacje i ładne drukowanie.
import json
raw_json = """
{
"status": "success",
"data": {
"user_id": 9042,
"username": "coder_xyz",
"roles": ["admin", "developer"],
"verified": true
}
}
"""
try:
# Parsing JSON string into Python dict
data = json.loads(raw_json)
print("--- JSON Decoded Successfully ---")
print(f"Username: {data['data']['username']}")
print(f"Is Admin: {'admin' in data['data']['roles']}")
# Mutating Python dict
data['data']['verified'] = False
data['data']['last_login'] = "2026-05-25"
# Serializing dict back to formatted JSON
pretty_json = json.dumps(data, indent=4)
print("\n--- Modified JSON String ---")
print(pretty_json)
except json.JSONDecodeError as e:
print(f"Invalid JSON Format: {e}")--- JSON Decoded Successfully ---
Username: coder_xyz
Is Admin: True
--- Modified JSON String ---
{
"status": "success",
"data": {
"user_id": 9042,
"username": "coder_xyz",
"roles": [
"admin",
"developer"
],
"verified": false,
"last_login": "2026-05-25"
}
}Wdrażanie krok po kroku
- Odczytywanie konfiguracji aplikacji i plików uwierzytelniających
- Analizowanie odpowiedzi z punktów końcowych interfejsu API REST
- Zapisywanie stanów lub poziomów programów w narzędziach komputerowych
Często zadawane pytania
Jaka jest różnica między zrzutem a zrzutem w Pythonie?
`dumps` serializuje obiekt do formatu ciągu JSON, podczas gdy `dump` zapisuje serializowany strumień JSON bezpośrednio do zapisywalnego obiektu pliku.
Jak Python obsługuje wartości null JSON?
Dekoder `json` w Pythonie automatycznie mapuje JSON `null` na `None`, `true` i `false` na `True` i `False`, a tablice na listy.