Skip to main content

Python Serializer and Deserializer

Project description

PySer page on the Python Package Index

PySer(full documentation) is a library for serializing and deserializing data in different data formats through intuitive mappings in defined inside a Python class.

Current formats supported are JSON and config files, with more coming later on.


Class mappings for serializing and deserializing in JSON

from pyser import SchemaJSON, SerField, DeserField
class FruitBasketSchema(SchemaJSON):
    def __init__(self):           = DeserField()
        self.fruit          = DeserField()
        self.iD             = DeserField(name='ref', kind=int)
        self.intString      = DeserField(kind=int)
        self.optionalString = DeserField(kind=str, optional=True)
        self.items          = DeserField(repeated=True)           = SerField()
        self.fruit          = SerField()
        self.iD             = SerField(name='ref', kind=int)
        self.intString      = SerField(kind=int)
        self.optionalString = SerField(optional=True)
        self.items          = SerField(repeated=True)
        self.register       = SerField(parent_keys=['checkout'], kind=int)
        self.amount         = SerField(parent_keys=['checkout'], kind=int)

fruit_basket_schema = FruitBasketSchema()

class FruitBasket():
    def __init__(self):           = 'basket'
        self.fruit          = 'banana'
        self.iD             = '123'
        self.intString      = '12345'
        self.optionalString = None
        self.items          = ['paper', 'rock']
        self.register       = '1'
        self.amount         = '10'

Serializing to a JSON file

basket = FruitBasket()
fruit_basket_schema.to_json(basket, filename="basket.json")

File contents of basket.json after serializing:

    "name": "basket",
    "fruit": "banana",
    "ref": 123,
    "intString": 12345,
    "items": [
    "checkout": {
        "register": 1,
        "amount": 10

Similarly deserialization from a json file:

basket = FruitBasket()
fruit_basket_schema.from_json(basket, raw_json=raw_json)


Installation by hand: you can download the source files from PyPi or Github:

python install

Installation with pip: make sure that you have pip installed, type this in a terminal:

pip install pyser


Running build_docs has additional dependencies that require installation.

pip install pyser[docs]

The documentation can be generated and viewed via:

$ python build_docs

You can pass additional arguments to the documentation build, such as clean build:

$ python build_docs -E

More information is available from the Sphinx documentation.

Running Tests

Run the python command

python test


  1. Fork the repository from Github

  2. Clone your fork

git clone
  1. Add the main repository as a remote

git remote add upstream
  1. Create a pull request and follow the guidelines


Project details

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

pyser-0.1.5.tar.gz (7.3 kB view hashes)

Uploaded source

Built Distribution

pyser-0.1.5-py3-none-any.whl (7.2 kB view hashes)

Uploaded py3

Supported by

AWS AWS Cloud computing Datadog Datadog Monitoring Facebook / Instagram Facebook / Instagram PSF Sponsor Fastly Fastly CDN Google Google Object Storage and Download Analytics Huawei Huawei PSF Sponsor Microsoft Microsoft PSF Sponsor NVIDIA NVIDIA PSF Sponsor Pingdom Pingdom Monitoring Salesforce Salesforce PSF Sponsor Sentry Sentry Error logging StatusPage StatusPage Status page