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) do object (JSON)
  • lista (Python) do tablica (JSON)
  • str (Python) na string (JSON)
  • int, float (Python) do number (JSON)
  • Prawda, Fałsz (Python) na prawda, fałsz (JSON)
  • None (Python) na null (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.