Skip to content

SmartJson is a simple tool to convert any class to JSON and convert json to Object.

License

Notifications You must be signed in to change notification settings

koffiisen/SmartJson

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

22 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

PyPI version PyPI version PyPI version

PyPI install PyPI version PyPI download

  • BigQuery | Google cloud <==>

Downloads Downloads Downloads

Python libraries to convert class to json, object and dict to Json and Json to Object (SmartJson)

SmartJson is a simple tool to convert any class or dict to JSON and convert json to Object.

Documentation

Features:

version (2.0.3)

  • update list serialization

version (2.0.2)

  • Fix script
  • Add script support enumeration (enum)
  • Already support type : * class * date * datetime * set * OrderedDict * deque * list * int * float * bool * complex * tuple * str * dict * bytes * None
  • ex :

    from enum import Enum, IntEnum
    from scripts import SmartJson
    
    class LoggerLevel(Enum):
      CRITICAL = 'CRITICAL'
      ERROR = 'ERROR'
      WARNING = 'WARNING'
      INFO = 'INFO'
      DEBUG = 'DEBUG'
      NOTSET = "NOTSET"
      
      
    class Status(IntEnum):
      success = 0
      failure = 1
    
    print(SmartJson({'Log': LoggerLevel, 'Stat': Status}).serialize())
  • output :

    {
      "Log": [
        {
          "CRITICAL": "CRITICAL",
          "DEBUG": "DEBUG",
          "ERROR": "ERROR",
          "INFO": "INFO",
          "NOTSET": "data",
          "WARNING": "WARNING"
        }
      ],
      "Stat": [
        {
          "failure": 1,
          "success": 0
        }
      ]
    }
    

version (2.0.1)

  • Fix script

  • update complex serialization

  • Add new method (serializeToJsonFile) convert your class to json file

  • dict : Default parameter directory="output", filename="smart.json"

  • class : Default parameter directory="output", filename="className.json"

  • ex :

    • SmartJson(Test()).serializeToJsonFile(directory="yourPath", filename="MyFileName.json")

    • SmartJson(Test()).serializeToJsonFile() :=> (output) :=> outpout/Test.json

version (2.0.0)

Support :

  • Class
  • date
  • datetime
  • set
  • OrderedDict
  • deque
  • list
  • int
  • float
  • bool
  • complex
  • tuple
  • str
  • dict
  • bytes
  • None

Install

smartjson is released on PyPI, so all you need is:

$ pip install smartjson

To upgrade to latest version:

$ pip install --upgrade smartjson

Usage

Requirements

Python >= 2.7 must be installed.

Parameters

  • class or object or dict: you want to convert to json

Project structure:

  • scripts - source code of a package
  • example.py - working examples

Contribute

  1. If unsure, open an issue for a discussion
  2. Create a fork
  3. Make your change
  4. Make a pull request
  5. Happy contribution!

EXAMPLE

Class

import datetime
from collections import deque, OrderedDict
from scripts.__smart_json__ import SmartJson


class Test:
    def __init__(self):
        self.test = "none"
        self.id = 2
        self.date = datetime.datetime.now()
        self.tuple = [((1, 'a'), (2, 'b'))]


data = {
    "int": 1,
    "str": "SmartJson",
    "bytes": "pip install smartjson".encode("utf-8"),
    "date": datetime.date(2010, 1, 1),
    "datetime": datetime.datetime(2020, 1, 1, 18, 30, 0, 500),
    "pull": Test(),
    "set": (["1", 12, datetime.datetime.now()]),
    "list": [datetime.datetime.now(), Test()],
    "ordereddict": OrderedDict([
        ("b", OrderedDict([("b", Test()), ("a", datetime.datetime.now())])),
        ("a", OrderedDict([("b", 1), ("a", [((1, 'a'), (datetime.datetime.now(), 'b'))])])),
    ]),
    "deque": deque([
        deque([1, 2]),
        deque([3, 4]),
    ])
}


class Pull:
    def __init__(self):
        self.id = 2
        self.title = "Iam pull"
        self.author = "Joel O."
        self.subPull = Pull.SubPull()
        self.data = data
        self.date = datetime.datetime.now()
        self.list = [1, datetime.datetime.now(), Pull.SubPull()]

    class SubPull:
        def __init__(self):
            self.subId = 3
            self.subTitle = "I am sub title"
            self.subAuthor = "OKJ."
            self.date = datetime.date(2010, 1, 1)

# Example
my_json = SmartJson(data).serialize()
print(my_json)

Output:

{
  "bytes": "pip install smartjson",
  "date": "2010-01-01",
  "datetime": "2020-01-01 18:30:00.000500",
  "deque": {
    "1": 2,
    "3": 4
  },
  "int": 1,
  "list": [
    "2019-10-01 19:39:01.916122",
    {
      "date": "2019-10-01 19:39:01.916122",
      "id": 2,
      "test": "none",
      "tuple": [
        [
          [
            1,
            "a"
          ],
          [
            2,
            "b"
          ]
        ]
      ]
    }
  ],
  "ordereddict": {
    "a": {
      "a": [
        [
          [
            1,
            "a"
          ],
          [
            "2019-10-01 19:39:01.916122",
            "b"
          ]
        ]
      ],
      "b": 1
    },
    "b": {
      "a": "2019-10-01 19:39:01.916122",
      "b": {
        "date": "2019-10-01 19:39:01.916122",
        "id": 2,
        "test": "none",
        "tuple": [
          [
            [
              1,
              "a"
            ],
            [
              2,
              "b"
            ]
          ]
        ]
      }
    }
  },
  "pull": {
    "date": "2019-10-01 19:39:01.916122",
    "id": 2,
    "test": "none",
    "tuple": [
      [
        [
          1,
          "a"
        ],
        [
          2,
          "b"
        ]
      ]
    ]
  },
  "set": [
    "1",
    12,
    "2019-10-01 19:39:01.916122"
  ],
  "str": "SmartJson"
}

Json to Object


objFromFile = smart_json.toObjectFromFile("jobs.json")
obj = smart_json.toObject('{"people":[{"name":"Scott", "website":"stackabuse.com", "from":"Nebraska"}]}')
obj2 = smart_json.toObject({'item': 'Beer', 'cost': '£4.00'})

print(obj2.item, obj2.cost)
print(objFromFile.job.item.another.precision)
print(obj.people[0].name, obj.people[0].website)

# Beer £4.00
# 99.56
# Scott stackabuse.com

For support or coffee :)

screenshot

Author : Koffi Joel O.

About

SmartJson is a simple tool to convert any class to JSON and convert json to Object.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages