Ecosyste.ms: Awesome

An open API service indexing awesome lists of open source software.

Awesome Lists | Featured Topics | Projects

https://github.com/kkristof200/py_jsoncodable

py_todict
https://github.com/kkristof200/py_jsoncodable

Last synced: 10 days ago
JSON representation

py_todict

Awesome Lists containing this project

README

        

# jsoncodable

![PyPI - package version](https://img.shields.io/pypi/v/jsoncodable?logo=pypi&style=flat-square)
![PyPI - license](https://img.shields.io/pypi/l/jsoncodable?label=package%20license&style=flat-square)
![PyPI - python version](https://img.shields.io/pypi/pyversions/jsoncodable?logo=pypi&style=flat-square)
![PyPI - downloads](https://img.shields.io/pypi/dm/jsoncodable?logo=pypi&style=flat-square)

![GitHub - last commit](https://img.shields.io/github/last-commit/kkristof200/py_jsoncodable?style=flat-square)
![GitHub - commit activity](https://img.shields.io/github/commit-activity/m/kkristof200/py_jsoncodable?style=flat-square)

![GitHub - code size in bytes](https://img.shields.io/github/languages/code-size/kkristof200/py_jsoncodable?style=flat-square)
![GitHub - repo size](https://img.shields.io/github/repo-size/kkristof200/py_jsoncodable?style=flat-square)
![GitHub - lines of code](https://img.shields.io/tokei/lines/github/kkristof200/py_jsoncodable?style=flat-square)

![GitHub - license](https://img.shields.io/github/license/kkristof200/py_jsoncodable?label=repo%20license&style=flat-square)

## Description

Easily create object from any dict/jsonstr/jsonfile and dict/jsonstr/jsonfile from any object

From v0.1.0 it is based on [jsonpickle](https://github.com/jsonpickle/jsonpickle)

## Install

~~~~bash
pip install jsoncodable
# or
pip3 install jsoncodable
~~~~

## Usage

~~~~python
from jsoncodable import JSONCodable, CompressionAlgorithm

class BirthDay(JSONCodable):
def __init__(
self,
month: int,
day: int
):
self.month = month
self.day = day

class Person(JSONCodable):
def __init__(
self,
name: str,
birth_month: int,
birth_day: int
):
self.name = name
self.birth_day = BirthDay(birth_month, birth_day)

person = Person(
name='John',
birth_month=7,
birth_day=7
)

person.jsonprint()

# prints
#
# {
# "name": "John",
# "birth_day": {
# "month": 7,
# "day": 7
# }
# }

Person.load(person.json).jsonprint()

# prints
#
# {
# "name": "John",
# "birth_day": {
# "month": 7,
# "day": 7
# }
# }

import os

# Save with compression
json_file_path = 'test.json'

for c in CompressionAlgorithm:
compressed_file_path = person.save(json_file_path, compression=c)
# returns a file path which has the compressed extension if not present at the end of your provided path
# also prints a message to let you know, that the path had been modified

Person.load(compressed_file_path).jsonprint()
# prints
#
# {
# "name": "John",
# "birth_day": {
# "month": 7,
# "day": 7
# }
# }

# Cleaning up

os.remove(compressed_file_path)
~~~~

## Dependencies

[jsonpickle](https://pypi.org/project/jsonpickle), [noraise](https://pypi.org/project/noraise)