Parsowanie Pythona JSON: serializacja i deserializacja
Dowiedz się, jak czytać, pisać i analizować dane JSON w języku Python. Opanuj json.loads, json.dumps i dostosuj kodery/dekodery JSON.
Przegląd
JSON (JavaScript Object Notation) to lekki format wymiany danych, który dominuje w nowoczesnych internetowych interfejsach API, konfiguracjach i ładunkach baz danych. Ponieważ struktury JSON przypominają słowniki i listy Pythona, tłumaczenie między nimi jest niezwykle płynne. Python jest wyposażony we wbudowany moduł `json`, który ułatwia analizowanie ciągów JSON na obiekty Pythona i konwertowanie obiektów Pythona z powrotem na ciągi JSON.
Proces tłumaczenia obiektu Pythona (takiego jak słownik) na surowy ciąg znaków JSON nazywa się serializacją lub kodowaniem. Jest to obsługiwane przez `json.dumps()` (dla ciągów znaków) i `json.dump()` (do zapisu bezpośrednio do pliku). Możesz kontrolować parametry formatowania, takie jak „wcięcie”, aby upiększyć JSON lub „klucze_sortowania”, aby zachować alfabetyczną kolejność atrybutów. I odwrotnie, parsowanie ciągu JSON do słownika Pythona nazywa się deserializacją i jest wykonywane za pomocą funkcji `json.loads()` i `json.load()`.
Podczas gdy standardowe typy języka Python, takie jak ciągi znaków, liczby, listy i słowniki, serializują się automatycznie do formatu JSON, obiekty niestandardowe (takie jak klasy lub obiekty typu datetime) tego nie robią. Próba bezpośredniego zakodowania obiektu niestandardowego zgłosi błąd „TypeError”. Aby temu zaradzić, programiści muszą utworzyć niestandardową klasę kodera, która dziedziczy po `json.JSONEncoder` i zastąpić metodę `.default()`, aby serializować klasy do czytelnych słowników. Opanowanie manipulacji JSON jest kluczem do komunikacji z zewnętrznymi usługami internetowymi.
Dane wyjściowe kodu i wykonania
Konwertowanie słownika na ciąg JSON i ponowne jego analizowanie przy użyciu wbudowanej biblioteki json.
import json
# Python Dictionary representing a user profile
user_profile = {
"name": "Alex",
"is_premium": True,
"skills": ["Python", "Docker"],
"age": 28
}
# Serialize dictionary to JSON string
json_string = json.dumps(user_profile, indent=2)
print("--- JSON String ---")
print(json_string)
# Deserialize JSON string back to dictionary
parsed_dict = json.loads(json_string)
print("\n--- Parsed Python Dictionary ---")
print(f"Name: {parsed_dict['name']}")
print(f"First Skill: {parsed_dict['skills'][0]}")--- JSON String ---
{
"name": "Alex",
"is_premium": true,
"skills": [
"Python",
"Docker"
],
"age": 28
}
--- Parsed Python Dictionary ---
Name: Alex
First Skill: PythonWdrażanie krok po kroku
- Wysyłanie ładunków i odczytywanie danych z interfejsów API REST
- Przechowywanie preferencji konfiguracyjnych w plikach settings.json
- Przekazywanie uporządkowanych ładunków między mikrousługami
Często zadawane pytania
Jaka jest różnica między json.dump i json.dumps?
json.dump (bez „s”) zapisuje dane JSON bezpośrednio do strumienia pliku. json.dumps (z „s”) serializuje dane do zmiennej łańcuchowej Pythona.
Jak radzisz sobie z błędami dekodowania JSON?
Zawiń kod analizujący w blok try/except przechwytujący „json.JSONDecodeError”, aby sprawnie obsługiwać zniekształcone ciągi JSON.
Powiązane tematy
Opanuj słowniki Pythona. Dowiedz się, jak przechowywać, pobierać i obsługiwać dane pary klucz-wartość. Poznaj wydajność i najlepsze praktyki dotyczące mapowań.
We/wy plików w języku PythonDowiedz się, jak czytać i zapisywać pliki w Pythonie. Opanuj menedżery open(), read(), write() i kontekstu, aby bezpiecznie obsługiwać operacje na plikach bez wycieków zasobów.
Python CSVDowiedz się, jak obsługiwać dane CSV w Pythonie. Opanuj programy csv.reader, csv.writer i DictReader/DictWriter w celu wydajnego analizowania tabel.
Polecane zasoby Pythona
Poszerzaj swoją wiedzę dzięki powiązanym interaktywnym samouczkom, ściągawkom i porównaniom kodów.
Jak czytać i analizować plik JSON w Pythonie
Dowiedz się, jak czytać, analizować i ładować pliki JSON w Pythonie, korzystając z wbudowanego modułu json. Opanuj konwersję ciągów JSON na słowniki i odwrotnie.
Ściągawka dotycząca metod ciągów w Pythonie
Kompletny przewodnik dotyczący manipulacji ciągami znaków w języku Python. Opanuj formatowanie, wyszukiwanie, dzielenie, zastępowanie i sprawdzanie właściwości ciągów.
Python kontra JavaScript: który język programowania jest najlepszy?
Kompleksowe porównanie Pythona i JavaScript. Poznaj różnice w składni, wydajność, przypadki użycia (backend vs frontend) i przykłady kodowania.