Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

What is deserialize and serialize in JSON?

People also ask

What is meant by serialization & deserialization?

Serialization is the process of converting an object into a stream of bytes to store the object or transmit it to memory, a database, or a file. Its main purpose is to save the state of an object in order to be able to recreate it when needed. The reverse process is called deserialization.

What is the use of JSON deserialize?

Deserialization is the process of decoding the data that is in JSON format into native data type. In Python, deserialization decodes JSON data into a dictionary(data type in python).

Why is JSON serialized?

The purpose of serializing it into JSON is so that the message will be a format that can be understood and from there, deserialize it into an object type that makes sense for the consumer.

Why do we need to serialize and deserialize data?

Serialization takes an in-memory data structure and converts it into a series of bytes that can be stored and transferred. Deserialization takes a series of bytes and converts it to an in-memory data structure that can be consumed programmatically.


JSON is a format that encodes objects in a string. Serialization means to convert an object into that string, and deserialization is its inverse operation (convert string -> object).

When transmitting data or storing them in a file, the data are required to be byte strings, but complex objects are seldom in this format. Serialization can convert these complex objects into byte strings for such use. After the byte strings are transmitted, the receiver will have to recover the original object from the byte string. This is known as deserialization.

Say, you have an object:

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

serializing into JSON will convert it into a string:

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

which can be stored or sent through wire to anywhere. The receiver can then deserialize this string to get back the original object. {foo: [1, 4, 7, 10], bar: "baz"}.


Serialize and Deserialize

In the context of data storage, serialization (or serialisation) is the process of translating data structures or object state into a format that can be stored (for example, in a file or memory buffer) or transmitted (for example, across a network connection link) and reconstructed later. [...]

The opposite operation, extracting a data structure from a series of bytes, is deserialization.

Source: wikipedia.org

Explained with Python

In Python serialization does nothing else than just converting the given data structure into its valid JSON pendant (e.g., Python's True will be converted to JSON's true and the dictionary itself will be converted to a string) and vice versa for deserialization.

You can easily spot the difference between Python and JSON representations, e.g., by their Boolean values. Have a look at the following table for the basic types used in both contexts:

Python JSON
True true
False false
None null
int, float number
str (with single ', double " and tripple """ quotes) string (only double " quotes)
dict object
list, tuple array

Code Example

Python builtin module json is the standard way to do serialization and deserialization:

import json

data = {
    'president': {
        "name": """Mr. Presidente""",
        "male": True,
        'age': 60,
        'wife': None,
        'cars': ('BMW', "Audi")
    }
}

# serialize
json_data = json.dumps(data, indent=2)

print(json_data)
# {
#   "president": {
#     "name": "Mr. Presidente",
#     "male": true,
#     "age": 60,
#     "wife": null,
#     "cars": [
#       "BMW",
#       "Audi"
#     ]
#   }
# }

# deserialize
restored_data = json.loads(json_data) # deserialize

Source: realpython.com, geeksforgeeks.org


Explanation of Serialize and Deserialize using Python

In python, pickle module is used for serialization. So, the serialization process is called pickling in Python. This module is available in Python standard library.

Serialization using pickle

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

The PICKLE file (can be opened by a text editor like notepad) contains this (serialized data):

€}q (KX 6qKX 2qKX fqu.

Deserialization using pickle

import pickle

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

print(get_deserialized_data_back)

Output:

{1: '6', 2: '2', 3: 'f'}