Jak analizować JSON w Pythonie
Opublikowany: 2022-02-09JSON to popularny format wymiany danych. Python jest dostarczany z wbudowanym modułem JSON do analizowania i pracy z danymi JSON. A ten samouczek nauczy Cię wszystkiego o pracy z JSON w Pythonie.
Pod koniec tego samouczka nauczysz się:
- podstawy JSON,
- jak parsować i tworzyć ciągi JSON w Pythonie i
- jak czytać i pisać do plików JSON w Pythonie.
Zaczynajmy!
Co to jest JSON?
JSON to skrót od J ava S cript Object N otation i jest to tekstowy format wymiany danych. Chociaż JSON jest początkowo inspirowany obiektami JavaScript, prawie wszystkie języki programowania obsługują pracę z JSON.
Jeśli kiedykolwiek pracowałeś z interfejsami API lub czytałeś pliki konfiguracyjne — prawdopodobnie natknąłeś się na JSON.
Wysyłasz i odbierasz dane w formacie JSON podczas wykonywania zapytań do interfejsów API. JSON jest również szeroko stosowany w komunikacji klient-serwer w aplikacjach. Ponadto możesz użyć JSON również do przechowywania danych ogólnego przeznaczenia.
Format JSON jest bardzo podobny do słownika Pythona. Słowniki to potężne wbudowane struktury danych w Pythonie, które przechowują dane w parach klucz-wartość.
Zanim przejdziemy dalej, oto kilka punktów, na które warto zwrócić uwagę:
- W Pythonie obiekt JSON jest przechowywany jako słownik.
- Tablica w JSON jest przechowywana jako lista Pythona.
- W JSON wartości logiczne są oznaczone jako
true
ifalse
. W Pythonie są one konwertowane na wartości logiczneTrue
iFalse
.
Aby uzyskać więcej informacji na temat typów danych, które są tłumaczone z JSON na Python, przeczytaj dokumentację tutaj.
Ponieważ moduł json
jest częścią standardowej biblioteki Pythona, nie musisz go instalować. Możesz zaimportować do swojego bieżącego katalogu w następujący sposób:
import json
Jak załadować ciąg JSON w Pythonie
Ogólna składnia ładowania ciągu JSON w Pythonie to:
<dict_obj> = json.loads(<json_str>)
Tutaj,
-
<dict_obj>
to słownik Pythona, do którego chcesz załadować ciąg JSON, -
<json_str>
to dowolny prawidłowy ciąg JSON.
Spowoduje to załadowanie <json_str>
do słownika Pythona <dict_obj>
.
Zakodujmy przykład. Tutaj json_str
jest ciągiem JSON.
json_str = ''' { "books": [ { "title": "The Wind in the Willows", "author": "Kenneth Grahame", "year": "1908" }, { "title": "To the Lighthouse", "author": "Virginia Woolf", "year": "1927" } ] } '''
A poniższy fragment kodu pokazuje, jak załadować ciąg JSON json_str
do słownika Pythona za pomocą metody load loads()
. Możesz użyć wbudowanej funkcji type()
, aby sprawdzić, czy py_dict
jest słownikiem Pythona.
py_dict = json.loads(json_str) type(py_dict) # Output: dict print(py_dict) # Output {'books': [{'title': 'The Wind in the Willows', 'author': 'Kenneth Grahame', 'year': '1908'}, {'title': 'To the Lighthouse', 'author': 'Virginia Woolf', 'year': '1927'}]}
Jak pokazano w powyższym kodzie, wszystkie pola w ciągu JSON są parami klucz-wartość w py_dict
.
Jak tworzyć ciągi JSON w Pythonie
Załóżmy, że masz słownik Pythona. Jak więc utworzyć z niego ciąg JSON?
Możesz to zrobić za pomocą metody dumps()
o następującej składni:
<json_str> = json.dumps(<dict_obj>)
Tutaj,
-
<dict_obj>
to słownik Pythona, z którego chcesz utworzyć ciąg JSON, -
<json_str>
to wynikowy ciąg JSON.
Tak więc metoda dumps dumps()
zrzuca <dict_obj>
do ciągu JSON <json_str>
.
Do naszego istniejącego słownika Pythona py_dict
. dodajmy nowy klucz "movies"
. Możesz to zrobić, jak pokazano na poniższym fragmencie kodu:
py_dict["movies"] = [{"title":"The Imitation Game","year":"2014", "lang":"en","watched":True}]
Teraz zrzućmy zmodyfikowany słownik do nowego ciągu JSON json_str2
za pomocą metody dumps()
.
json_str2 = json.dumps(py_dict) print(json_str2) # Output {"books": [{"title": "The Wind in the Willows", "author": "Kenneth Grahame", "year": "1908"}, {"title": "To the Lighthouse", "author": "Virginia Woolf", "year": "1927"}], "movies": [{"title": "The Imitation Game", "year": "2014", "lang": "en", "watched": true}]}
Jak widać w powyższym przykładzie, wyjściowy ciąg JSON jest trudny do odczytania bez odpowiedniego formatowania. Możesz użyć opcjonalnego parametru indent
, aby dodać wcięcie.
Możesz to zrobić, ustawiając indent
na liczbę całkowitą, taką jak 2, jak pokazano poniżej:
json_str2 = json.dumps(py_dict, indent = 2) print(json_str2) # Output { "books": [ { "title": "The Wind in the Willows", "author": "Kenneth Grahame", "year": "1908" }, { "title": "To the Lighthouse", "author": "Virginia Woolf", "year": "1927" } ], "movies": [ { "title": "The Imitation Game", "year": "2014", "lang": "en", "watched": true } ] }
Obserwuj, jak dane wyjściowe zostały sformatowane za pomocą wcięć i łatwo je prześledzić.

Uwaga : Jeśli chcesz, aby klucze były sortowane w kolejności alfabetycznej, możesz ustawić parametr
sort_keys
naTrue
.
Jak widać na poniższym fragmencie kodu, klucze zostały posortowane w kolejności alfabetycznej.
json_str2 = json.dumps(py_dict, indent = 2, sort_keys=True) print(json_str2) # Output { "books": [ { "author": "Kenneth Grahame", "title": "The Wind in the Willows", "year": "1908" }, { "author": "Virginia Woolf", "title": "To the Lighthouse", "year": "1927" } ], "movies": [ { "lang": "en", "title": "The Imitation Game", "watched": true, "year": "2014" } ]
A klawisze pojawiają się teraz w kolejności alfabetycznej: "author"
, "title"
i "year"
.
Do tej pory nauczyłeś się pracować z ciągami JSON w Pythonie. W następnej sekcji dowiesz się, jak pracować z plikami JSON.
Jak czytać plik JSON w Pythonie
Aby odczytać plik JSON w Pythonie, użyj następującej składni:
json.load(<json-file>) # where <json-file> is any valid JSON file.
Zwróć uwagę, jak używamy metody
load()
, a nie load(loads()
. load(loads()
ładuje ciąg znaków JSON, podczas gdyload()
ładuje plik JSON .
Powinieneś rozważyć użycie menedżerów kontekstu podczas pracy z plikami w Pythonie. Możesz także spróbować odczytać pliki w następujący sposób, bez korzystania z menedżera kontekstu:
my_file = open('students.json','r') contents = my_file.read() print(contents) file.close()
Jeśli nie zamkniesz pliku, może dojść do marnowania zasobów.
Jednak podczas pracy z menedżerami kontekstów pliki są automatycznie zamykane po zakończeniu operacji na plikach.
I możesz użyć menedżera kontekstu do odczytu plików, jak pokazano poniżej:
with open('students.json','r') as file: data = json.load(file) print(data) # Output {'students': [{'roll_num': 'cs27', 'name': 'Anna', 'course': 'CS'}, {'roll_num': 'ep30', 'name': 'Kate', 'course': 'PHY'}]}
Kiedy czytasz z pliku, określ tryb jako read —wskazywany przez 'r'
w powyższym kodzie.
Uwaga : Aby łatwo poruszać się po bieżącym katalogu, upewnij się, że plik JSON znajduje się w tym samym folderze co
main.py
, jak pokazano na poniższym obrazku. Jeśli plik JSON znajduje się w innym folderze, pamiętaj o określeniu ścieżki do pliku.

W następnej sekcji dowiesz się, jak pisać do pliku JSON.
Jak pisać do pliku JSON w Pythonie?
Aby zapisać w istniejącym pliku JSON lub utworzyć nowy plik JSON, użyj metody dump()
, jak pokazano:
json.dump(<dict_obj>,<json_file>) # where <dict_obj> is a Python dictionary # and <json_file> is the JSON file
Tak więc powyższa składnia zrzuca słownik <dict_obj>
do pliku JSON <json_file>
.
W poprzedniej sekcji mieliśmy słownik py_dict
. Teraz zrzućmy to do nowego pliku JSON. I nazwijmy go new_file.json
.
Poniższa komórka kodu pokazuje, jak można użyć funkcji dump()
:
with open('new_file.json','w') as file: json.dump(py_dict,file)
Uwaga : Otwarcie pliku w trybie zapisu (
w
) nadpisuje zawartość, jeśli plik istnieje. Jeśli plik nie istnieje, plik jest tworzony.
Po wykonaniu powyższej komórki kodu zobaczysz, że nowy plik JSON został utworzony w bieżącym katalogu roboczym. I możesz iść dalej i zbadać zawartość pliku JSON.

Podczas zapisywania do plików kluczowym celem jest przechowywanie danych. A jeśli chcesz zachować formatowanie, możesz również użyć parametrów indent
i sort_keys
.
Wniosek
Czas na szybkie podsumowanie.
W tym samouczku nauczyłeś się:
- podstawy korzystania z JSON,
- jak używać metod load(
loads()
iload()
do odczytywania odpowiednio stringów JSON i plików JSON, - jak używać metod
dumps()
idump()
do zrzucania słowników Pythona odpowiednio do ciągów JSON i plików JSON.
Mam nadzieję, że ten samouczek okazał się pomocny. Miłej nauki!
Możesz również spojrzeć na narzędzia JSON, aby przeanalizować, sformatować i zweryfikować.