Skip to content

Latest commit

 

History

History
81 lines (50 loc) · 2.29 KB

README.md

File metadata and controls

81 lines (50 loc) · 2.29 KB

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