Python libraries to convert class to json or Tool to convert Class, object and dict to Json and Json to Object
Project description
BigQuery | Google cloud
<==>
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 packageexample.py
- working examples
Contribute
- If unsure, open an issue for a discussion
- Create a fork
- Make your change
- Make a pull request
- 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 :)
Author : Koffi Joel O.
Project details
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
File details
Details for the file smartjson-2.0.3.tar.gz
.
File metadata
- Download URL: smartjson-2.0.3.tar.gz
- Upload date:
- Size: 9.5 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/1.15.0 pkginfo/1.5.0.1 requests/2.21.0 setuptools/41.2.0 requests-toolbelt/0.9.1 tqdm/4.36.1 CPython/2.7.16
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 4202bba9eba06d0fdc2adbd8184451cc51319281288c7c0188fbaca8dd1a3c0b |
|
MD5 | df11b05e59ef2bbcf9fadf60e99107db |
|
BLAKE2b-256 | bd8db08703b9eddc56cc34f8087e5c85bf3b5f386eb87fe26cdbd3891e0d084f |
File details
Details for the file smartjson-2.0.3-py2-none-any.whl
.
File metadata
- Download URL: smartjson-2.0.3-py2-none-any.whl
- Upload date:
- Size: 7.6 kB
- Tags: Python 2
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/1.15.0 pkginfo/1.5.0.1 requests/2.21.0 setuptools/41.2.0 requests-toolbelt/0.9.1 tqdm/4.36.1 CPython/2.7.16
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | b333a6918bc09d5a260335edacb13d9ce95f0341d284fcb944902d5a8eb77b68 |
|
MD5 | d00e3274c54ad69d88ba9098346d5df5 |
|
BLAKE2b-256 | ef97cdc9acb8eeb9b15cc690c8e7d9e26af4160e244b079ea2335979e79a984c |