Widziałem terminy „deserializacja” i „serializacja” w formacie JSON. Co mieli na myśli?
Odpowiedzi:
JSON to format, który koduje obiekty w ciągu. Serializacja oznacza konwersję obiektu na ten ciąg , a deserializacja jest jego odwrotną operacją (konwersja ciągu -> obiekt) .
Podczas przesyłania danych lub przechowywania ich w pliku dane muszą być ciągami bajtów, ale złożone obiekty rzadko występują w tym formacie. Serializacja może konwertować te złożone obiekty na ciągi bajtów do takiego użycia. Po przesłaniu ciągów bajtów odbiorca będzie musiał odzyskać oryginalny obiekt z ciągu bajtów. Jest to znane jako deserializacja.
Powiedz, że masz obiekt:
{foo: [1, 4, 7, 10], bar: "baz"}
serializacja do formatu JSON przekształci go w ciąg:
'{"foo":[1,4,7,10],"bar":"baz"}'
które mogą być przechowywane lub przesyłane przewodowo do dowolnego miejsca. Odbiorca może następnie deserializować ten ciąg, aby odzyskać oryginalny obiekt. {foo: [1, 4, 7, 10], bar: "baz"}
.
"{foo: [1, 4, 7, 10], bar: "baz"}"
W kontekście przechowywania danych serializacja (lub serializacja) to proces tłumaczenia struktur danych lub stanu obiektu na format, który może być przechowywany (na przykład w pliku lub buforze pamięci) lub przesyłany (na przykład przez połączenie sieciowe) link) i zrekonstruowany później. […]
Odwrotną operacją, wyodrębniającą strukturę danych z szeregu bajtów, jest deserializacja . Z Wikipedii
W Pythonie „serializacja” nie robi nic innego, jak tylko konwersję podanej struktury danych (np. A dict
) do jej prawidłowego wisiorka JSON (obiekt).
True
zostanie przekonwertowany na JSON, true
a sam słownik zostanie umieszczony w cudzysłowie.True
/ False
,true
/false
json
to standardowy sposób serializacji:Przykład kodu:
data = {
"president": {
"name": "Zaphod Beeblebrox",
"species": "Betelgeusian",
"male": True,
}
}
import json
json_data = json.dumps(data, indent=2) # serialize
restored_data = json.loads(json_data) # deserialize
# serialized json_data now looks like:
# {
# "president": {
# "name": "Zaphod Beeblebrox",
# "species": "Betelgeusian",
# "male": true
# }
# }
Źródło: realpython.com
Wyjaśnienie serializacji i deserializacji przy użyciu języka Python
W Pythonie do serializacji używany jest moduł pickle . Tak więc proces serializacji w Pythonie nazywa się wytrawianiem . Ten moduł jest dostępny w standardowej bibliotece Pythona .
Serializacja za pomocą marynaty
import pickle
#the object to serialize
example_dic={1:"6",2:"2",3:"f"}
#where the bytes after serializing end up at, wb stands for write byte
pickle_out=open("dict.pickle","wb")
#Time to dump
pickle.dump(example_dic,pickle_out)
#whatever you open, you must close
pickle_out.close()
Plik PICKLE (można go otworzyć za pomocą edytora tekstu, takiego jak notatnik) zawiera następujące (dane serializowane):
€} q (KX 6qKX 2qKX fqu.
Deserializacja za pomocą marynaty
import pickle
pickle_in=open("dict.pickle","rb")
get_deserialized_data_back=pickle.load(pickle_in)
print(get_deserialized_data_back)
Wynik:
{1: '6', 2: '2', 3: 'f'}