Praca z danymi JSON w Pythonie
JSON (JavaScript Object Notation) to lekki format danych używany do wymiany danych między serwerem a klientem. Jest powszechnie używany w aplikacjach internetowych do wysyłania i odbierania danych. Python udostępnia wbudowany moduł o nazwie json
, który ułatwia pracę z danymi JSON. Ten artykuł przeprowadzi Cię przez podstawy pracy z danymi JSON w Pythonie, w tym odczytywanie, zapisywanie i manipulowanie obiektami JSON.
Czym jest JSON?
JSON to format tekstowy, który jest łatwy do odczytania i zapisu zarówno dla ludzi, jak i maszyn. Składa się z par klucz-wartość, podobnie jak słowniki Pythona. Typowy obiekt JSON wygląda tak:
{
"name": "Alice",
"age": 30,
"city": "New York",
"is_student": false,
"skills": ["Python", "JavaScript", "SQL"]
}
Importowanie modułu JSON
Moduł json
jest zawarty w standardowej bibliotece Pythona, więc nie musisz niczego instalować. Po prostu zaimportuj go na początku skryptu:
import json
Odczytywanie danych JSON
Dane JSON można odczytać z ciągu lub pliku. Metoda json.loads()
służy do parsowania danych JSON z ciągu, podczas gdy json.load()
służy do odczytywania danych JSON z pliku.
Odczytywanie JSON z ciągu
Aby odczytać JSON z ciągu, należy użyć metody json.loads()
, która konwertuje ciąg JSON na słownik języka Python.
# Example of reading JSON from a string
json_string = '{"name": "Alice", "age": 30, "city": "New York"}'
data = json.loads(json_string)
print(data)
print(data['name']) # Output: Alice
Odczytywanie JSON z pliku
Aby odczytać dane JSON z pliku, użyj metody json.load()
. Ta metoda odczytuje zawartość pliku i konwertuje ją na słownik Pythona.
# Example of reading JSON from a file
with open('data.json', 'r') as file:
data = json.load(file)
print(data)
Zapisywanie danych JSON
Dane JSON można zapisać w ciągu lub pliku. Metoda json.dumps()
służy do konwersji obiektu Pythona na ciąg JSON, podczas gdy json.dump()
służy do zapisu danych JSON w pliku.
Zapisywanie JSON do ciągu
Aby zapisać JSON w postaci ciągu znaków, należy użyć metody json.dumps()
, która konwertuje słownik Pythona na ciąg znaków JSON.
# Example of writing JSON to a string
data = {
"name": "Bob",
"age": 25,
"city": "Los Angeles"
}
json_string = json.dumps(data)
print(json_string)
Zapisywanie JSON do pliku
Aby zapisać dane JSON do pliku, użyj metody json.dump()
. Ta metoda przyjmuje obiekt Pythona i zapisuje go do pliku w formacie JSON.
# Example of writing JSON to a file
data = {
"name": "Bob",
"age": 25,
"city": "Los Angeles"
}
with open('output.json', 'w') as file:
json.dump(data, file)
Ładne drukowanie danych JSON
Metoda json.dumps()
ma kilka parametrów, które umożliwiają formatowanie danych JSON w celu zwiększenia czytelności. Parametr indent
określa liczbę spacji do użycia w celu wcięcia, podczas gdy parametr sort_keys
sortuje klucze w danych wyjściowych.
# Example of pretty-printing JSON data
data = {
"name": "Charlie",
"age": 35,
"city": "Chicago"
}
json_string = json.dumps(data, indent=4, sort_keys=True)
print(json_string)
Konwersja między typami danych JSON i Python
Moduł json
języka Python może obsługiwać różne typy danych i konwertować je między JSON i Python. Oto krótki odnośnik:
dict
(Python) doobject
(JSON)lista
(Python) dotablica
(JSON)str
(Python) nastring
(JSON)int
,float
(Python) donumber
(JSON)Prawda
,Fałsz
(Python) naprawda
,fałsz
(JSON)None
(Python) nanull
(JSON)
Obsługa błędów JSON
Podczas pracy z JSON mogą wystąpić błędy z powodu nieprawidłowego formatowania lub nieoczekiwanych danych. Moduł json
zgłasza wyjątki, takie jak JSONDecodeError
, gdy napotyka takie problemy. Użyj bloków try
i except
, aby obsługiwać te błędy w sposób elegancki.
# Handling JSON errors
json_string = '{"name": "Alice", "age": 30, "city": "New York"' # Missing closing brace
try:
data = json.loads(json_string)
except json.JSONDecodeError as e:
print(f"Error decoding JSON: {e}")
Wniosek
Praca z danymi JSON jest podstawową umiejętnością dla programistów Pythona, szczególnie w zakresie tworzenia stron internetowych i nauki o danych. Moduł json
udostępnia łatwe w użyciu metody odczytu, zapisu i manipulowania danymi JSON. Opanowując te techniki, możesz sprawnie obsługiwać dane JSON w swoich aplikacjach Pythona.