Wat is deserialiseren en serialiseren in JSON?

Ik heb de termen “deserialiseren” en “serialiseren” gezien bij JSON. Wat betekenen ze?


Antwoord 1, autoriteit 100%

JSON is een indeling die objecten in een tekenreeks codeert. Serialisatiebetekent een object converteren naar die string, en deserialisatie is de omgekeerde bewerking (convert string -> object).

Bij het verzenden van gegevens of het opslaan ervan in een bestand, moeten de gegevens bytestrings zijn, maar complexe objecten hebben zelden dit formaat. Serialisatie kan deze complexe objecten omzetten in bytestrings voor dergelijk gebruik. Nadat de bytestrings zijn verzonden, zal de ontvanger het oorspronkelijke object uit de bytestring moeten herstellen. Dit staat bekend als deserialisatie.

Stel, je hebt een object:

{foo: [1, 4, 7, 10], bar: "baz"}

serialiseren naar JSON zal het omzetten in een string:

'{"foo":[1,4,7,10],"bar":"baz"}'

die overal kan worden opgeslagen of via een kabel kan worden verzonden. De ontvanger kan deze string vervolgens deserialiseren om het oorspronkelijke object terug te krijgen. {foo: [1, 4, 7, 10], bar: "baz"}.


Antwoord 2, autoriteit 5%

In de context van gegevensopslag is serialisatie(of serialisatie) het proces van het vertalen van gegevensstructuren of objectstatus naar een formaat dat kan worden opgeslagen (bijvoorbeeld in een bestand of geheugenbuffer) of verzonden (bijvoorbeeld via een netwerkverbindingslink) en later gereconstrueerd. […]
De tegenovergestelde bewerking, het extraheren van een gegevensstructuur uit een reeks bytes, is deserialisatie. Van Wikipedia

In Python doet “serialisatie” niets anders dan alleen de gegeven gegevensstructuur (bijvoorbeeld een dict) omzetten in zijn geldige JSON-hanger (object).

  • Python’s truewordt geconverteerd naar JSON’s trueen het woordenboek zelf wordt dan tussen aanhalingstekens ingekapseld.
  • Je kunt het verschil tussen een Python-woordenboek en JSON gemakkelijk zien aan de hand van hun Booleaanse waarden:
    • Python: true/ false,
    • JSON: true/ false
  • Ingebouwde Python-module jsonis de standaardmanier om serialisatie uit te voeren:

Codevoorbeeld:

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
#   }
# }

Bron: realpython.com


Antwoord 3

Uitleg over serialiseren en deserialiseren met Python

In python wordt de pickle-modulegebruikt voor serialisatie. Het serialisatieproces wordt dus beitsengenoemd in Python. Deze module is beschikbaar in de standaardbibliotheek van Python.

serialisatie met behulp van augurk

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()

Het augurkbestand (kan worden geopend door een teksteditor zoals Kladblok) bevat deze (geserialiseerde gegevens):

€} q (KX 6QKX 2QKX FQU.

Deserialization met pickle

import pickle
pickle_in=open("dict.pickle","rb")
get_deserialized_data_back=pickle.load(pickle_in)
print(get_deserialized_data_back)

Uitgang:

{1: ‘6’, 2: ‘2’, 3: ‘f’}

Other episodes