jstruct

Readable serializable and deserializable Python nested models


Keywords
deserialization, models, nested-structures, python, serialization, typing
License
MIT
Install
pip install jstruct==2021.11

Documentation

jstruct

An eloquent and opinionated python library for nested object models definition offering simple serialization and deserialization into python dictionaries.

JStruct Codacy Badge Code style: black License: MIT

Why

The deserialization of JSON or yaml into python data types is a common practice useful in many ways.

  • Configuration file reading and writing
  • REST API message response generation and request processing
  • Object-Document Mapping for a document store
  • Data import parsing or export generation

How

JStruct leverage attrs the great Classes without boilerplate library to define structs without boilerplate.

What

The result is a simple and intuitive syntax familiar to a pythonista that brings Validation, Deserialization and Serialization.

Requirements

  • Python 3.6 and +

Installation

Install using pip

pip install jstruct

Usage

import attr
from typing import List
from jstruct import struct, JList

@struct
class Person:
    first_name: str
    last_name: str

@struct
class RoleModels:
    scientists: List[Person] = JList[Person]


payload = {
    "scientists": [{"first_name": "John", "last_name": "Doe"}] 
}

role_models = RoleModels(**payload)

print(role_models)

# RoleModels(scientists=[Person(first_name='John', last_name='Doe')])

print(attr.asdict(role_models))

# {'scientists': [{'first_name': 'John', 'last_name': 'Doe'}]}

Authors

Contribute

Contributors are welcomed.

License

This project is licensed under the MIT License - see the LICENSE.md file for details