1 Porównanie modułów serializacji danych
Wersje protokołów modułu pickle
wersja 0 protokołu
wersja 1 protokołu
wersja 2 protokołu
wersja 3 protokołu - dodana w Python 3.0
wspiera obiekty bajtowe; nie działa dla Python 2.x
wersja 4 protokołu - dodana w Python 3.4
(min. obsługa duzych obieków, więcej ich rodzajów oraz optymalizacje formatów). Domyślny od wersji Python 3.8
wersja 5 protokołu - dodana w Python 3.8
Tabela porównawcza
JSON |
Pickle |
tekstowy format serializacji (unicode, utf-8) |
binarny format serializacji |
czytelny dla człowieka |
nieczytelny dla człowieka |
interoperabilny poza ekosystemem Python'a |
specyficzny dla języka Python |
domyślnie reprezentuje podzbiór wbudowanych typów Pythona, bez obsługi klas |
pickle reprezentuje obszerny zbiór typów Python'a (wiele typów automatycznie, a złożone poprzez tzw. introspekcję) |
deserializacja niezaufanych ciągów JSON nie stanowi zagrożenia |
deserializacja niezaufanych ciągów JSON jest ryzykiem uruchomienia niebezpiecznego kodu |