semvec/pypi-packages huggingface dataset:
jsoncodable 0.1.7
to_dict
Requires Python: >=3.5

# 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)