Skip to content

karrioapi/jstruct

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

20 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

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