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.
Przegląd
JSON (JavaScript Object Notation) to najpopularniejszy format danych dla interfejsów API, plików konfiguracyjnych i przechowywania danych. Python ma wbudowany moduł `json`, który sprawia, że odczytywanie, analizowanie i zapisywanie danych JSON jest niezwykle proste. Ponieważ obiekty JSON są doskonale odwzorowane na słowniki Pythona, a tablice JSON są mapowane na listy w Pythonie, praca z JSON wydaje się natywna.
Aby odczytać JSON z pliku zewnętrznego, użyj funkcji `json.load()`, która analizuje strumień pliku i tłumaczy struktury JSON na typy danych Pythona. Jeśli dane JSON są już załadowane do pamięci jako ciąg znaków, zamiast tego użyj funkcji `json.loads()` („s” oznacza ciąg znaków). Wybranie właściwej funkcji zapobiega awariom parsera.
Podczas pracy z JSON najlepszą praktyką jest obsługa kodowania i potencjalnych błędów formatowania. Użycie `encoding="utf-8"` w instrukcji `open()` chroni skrypt przed awarią znaków specjalnych. Zawijanie operacji na plikach w bloku „try-except” przechwytującym „json.JSONDecodeError” gwarantuje, że aplikacja ulegnie degradacji, jeśli plik JSON będzie zniekształcony.
Dane wyjściowe kodu i wykonania
Ten kod demonstruje zapisanie przykładowego pliku JSON, odczytanie i przeanalizowanie go z powrotem do słownika Pythona oraz obsługę ciągu JSON.
import json
# Let's write a mock JSON file first
sample_data = {
"user": "developer123",
"skills": ["python", "javascript", "sql"],
"active": True
}
with open("data.json", "w", encoding="utf-8") as f:
json.dump(sample_data, f, indent=4)
# 1. Reading from a JSON file (using json.load)
with open("data.json", "r", encoding="utf-8") as file:
data_from_file = json.load(file)
print("File Content type:", type(data_from_file).__name__)
print("User skill list:", data_from_file["skills"])
# 2. Reading from a JSON string (using json.loads)
json_string = '{"host": "localhost", "port": 5432, "ssl": false}'
data_from_str = json.loads(json_string)
print("\nString Content type:", type(data_from_str).__name__)
print("Database host:", data_from_str["host"])File Content type: dict
User skill list: ['python', 'javascript', 'sql']
String Content type: dict
Database host: localhostWdrażanie krok po kroku
- Zaimportuj wbudowany moduł json do swojego skryptu.
- Otwórz plik JSON, używając open("nazwa pliku.json", "r", encoding="utf-8") jako pliku.
- Przekaż obiekt pliku do json.load(file), aby przeanalizować zawartość do słownika Pythona.
- Użyj json.loads(string_data), jeśli chcesz przeanalizować surowy ciąg JSON już załadowany do pamięci.
Często zadawane pytania
Jaka jest różnica między json.load() i json.loads()?
json.load() akceptuje obiekt strumieniowy przypominający plik (odczyt z dysku), podczas gdy json.loads() akceptuje standardowy obiekt typu string lub bytes zawierający treść JSON (odczyt z pamięci).
Jak radzić sobie z błędami serializacji JSON dla klas niestandardowych?
Moduł json języka Python nie może domyślnie serializować instancji klas niestandardowych. Należy podać niestandardową klasę kodera rozszerzającą json.JSONEncoder lub najpierw wyodrębnić atrybuty instancji do słownika, używając metody pomocniczej.
Powiązane tematy
Naucz się czytać pliki w Pythonie. Opanuj obsługę instrukcji open, readline, readlines i bezpiecznej obsługi wyjątków plików.
Jak pisać do pliku w PythonieDowiedz się, jak zapisywać tekst do plików w Pythonie. Opanuj różnicę między trybami zapisu („w”) i dodawania („a”) dzięki bezpiecznym menedżerom kontekstu.
Jak utworzyć słownik w PythonieDowiedz się, jak utworzyć słownik w Pythonie. Zrozumienie składni dosłownej, konstruktora dyktowania, rozumienia dyktowania i inicjatorów wartości kluczy.
Polecane zasoby Pythona
Poszerzaj swoją wiedzę dzięki powiązanym interaktywnym samouczkom, ściągawkom i porównaniom kodów.
We/wy plików w języku Python
Dowiedz 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.
Ściągawka dotycząca operacji na plikach w Pythonie
Skrócona instrukcja czytania i zapisywania plików w Pythonie. Opanuj tryby otwarte, menedżery kontekstu i czytanie linia po linii.
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.