O JSON
JSON (JavaScript Object Notation) to format plików i standard przechowywania danych, który wykorzystuje pary klucz-wartość do przechowywania i wymiany danych. Jest to najczęściej używany format wymiany danych, często spotykany w interfejsach API RESTful, lekkich bazach danych, plikach konfiguracyjnych i innym oprogramowaniu offline lub online, które musi przechowywać, pobierać i wymieniać dane. Większość języków programowania zawiera domyślnie biblioteki do analizowania i zapisywania danych JSON, a JSON jest formatem danych niezależnym od języka programowania. Wartości przechowywane w pliku JSON lub ładunku zwykle zawierają ciągi, liczby i możliwe do serializacji typy danych, takie jak listy (tablice).
Słowniki JSON i Python
Dane JSON w pythonie są konwertowane na obiekt słownika za pomocą metody „load”. Często widać, że niektórzy ludzie utożsamiają dane json ze słownikiem Pythona, ponieważ składnia ich definicji jest prawie taka sama. Jednak dane json to nic innego jak ciąg tekstowy o sztywnej składni, podczas gdy słownik Pythona jest obiektem struktury danych przechowywanym w pamięci. Jeśli chcesz przechowywać dane słownikowe w pliku tekstowym lub wysłać je do innego programu innego niż Python, musisz najpierw przekonwertować je na ciąg tekstowy (bajty). Ten zrzucony / przekonwertowany ciąg tekstowy jest zdefiniowany w standardowej składni JSON, a proces konwersji słownika Pythona na ciąg zgodny z json nazywa się serializacją.
Odczytywanie i zrzucanie danych JSON w Pythonie
Dane JSON mogą być pobierane jako odpowiedź z serwera, odczytywane z pliku, wycinane z parametrów zapytania URL i tak dalej. Ten artykuł skupi się głównie na odczytywaniu danych json z lokalnie przechowywanego pliku. Załóżmy, że „test”.plik json” zawiera następujące dane:
"codename": "Eoan Ermine", "version": "Ubuntu 19.10"Aby przeczytać test.plik json w pythonie, możesz użyć poniższego kodu:
importuj jsonz otwartym ("test.json") jako f:
dane = json.obciążenie (f)
zrzut = json.zrzuty(dane)
drukuj (dane)
drukuj (rodzaj(dane))
drukuj (zrzut)
drukuj (typ(zrzut))
Pierwsza linia w powyższym kodzie importuje moduł json. W następnym wierszu „z otwartym” służy do bezpiecznego odczytu zawartości pliku. W bloku „z otwartymi” „json.load” służy do odczytywania i przechowywania zawartości pliku w zmiennej „data”. Dane załadowane w poprzednim kroku są konwertowane z powrotem na ciąg json za pomocą „json.zrzucić”. Uruchomienie powyższego kodu spowoduje wyświetlenie następujących danych wyjściowych:
'kryptonim': 'Eoan Ermine', 'wersja': 'Ubuntu 19.10'"codename": "Eoan Ermine", "version": "Ubuntu 19.10"
Zwróć uwagę na powyższe dane wyjściowe, że „json.load” odczytuje surowe dane json do słownika Pythona, podczas gdy „json.dumps” konwertuje słownik na ciąg znaków zgodny ze strukturą JSON. Po przekonwertowaniu obiektu JSON na obiekt słownika Pythona możesz użyć wbudowanych metod słownika Pythona do obsługi danych. Powyższy przykład jest dość prosty i nie zawiera tablic w danych JSON ani wartości zagnieżdżonych. Jednak w pythonie możesz obsługiwać te wartości jak inne zagnieżdżone słowniki i listy.
Sortowanie i ładne drukowanie danych JSON
„json.dump” obsługuje kilka opcjonalnych parametrów do sortowania kluczy i ładnego drukowania danych wyjściowych dla lepszej czytelności.
importuj jsonz otwartym ("test.json") jako f:
dane = json.obciążenie (f)
zrzut = json.zrzuty(dane, sort_keys=True, wcięcie=4)
drukuj (zrzut)
Powyższy kod pokaże następujące dane wyjściowe:
"kryptonim": "Eoan Gronostaj",
"wersja": "Ubuntu 19.10"
Konwersje typu danych
Poniższa lista ilustruje, w jaki sposób wartości JSON są konwertowane na obiekty Pythona i na odwrót.
JSON | Pyton |
strunowy | str |
numer | int lub pływak |
prawda fałsz | Prawda fałsz |
zero | Żaden |
szyk | lista |
obiekt | dyktować |
Json.moduł wiersza poleceń narzędzia
Python zawiera ładne narzędzie wiersza poleceń „json.narzędzie”, które może być używane do sprawdzania poprawności i ładnego drukowania ciągów i plików JSON.
$ echo '"codename": "Eoan Ermine", "version": "Ubuntu 19.10"' | python3 -m json.narzędzieUruchomienie powyższego polecenia spowoduje wyświetlenie następujących danych wyjściowych:
"kryptonim": "Eoan Gronostaj",
"wersja": "Ubuntu 19.10"
Możesz także użyć json.narzędzie z plikami JSON. Zastąp „in_file” i „out_file” w poniższym poleceniu żądanymi wartościami:
$ python3 -m json.narzędzie in_file out_filePoza ładnym drukowaniem, sortowaniem i weryfikowaniem danych JSON, json.narzędzie nie robi nic więcej. Więc jeśli chcesz manipulować jakimikolwiek danymi JSON, musisz napisać własny niestandardowy kod za pomocą wbudowanego modułu JSON.