Parse json to dataclass
Project description
Parse json to python dataclass
Installion
pip3 install pyjson2dataclass
Usage
json2dataclass
usage: json2dataclass [-h] [-d SAVE_DIR] [-i [INPUT ...]] [-p] [-f]
options:
-h, --help show this help message and exit
-d SAVE_DIR, --save-dir SAVE_DIR
specify the directory parsed dataclass file save to
-i [INPUT ...], --input [INPUT ...]
specify the input json file path
-p, --pascal use pascalName for parsed dataclass filename
-f, --force enable overwrite exists dataclass
json2dataclass -i <json file1> <json file2> ... -d dataclass
What above did is parse json file passed by -i to dataclass python file and save them to directory 'dataclass'
json2dataclass_test
usage: json2dataclass_test [-h] [-d DATACLASS_DIR] [-j JSON_DIR]
options:
-h, --help show this help message and exit
-d DATACLASS_DIR, --dataclass-dir DATACLASS_DIR
specify parsed dataclass directory to be test
-j JSON_DIR, --json-dir JSON_DIR
specify json directory to be test
json2dataclass_test -j json -d dataclass
We can use 'json2dataclass_test' to check dataclass python quickly
Examples
from pyjson2dataclass import json2dataclass
import json
filepath = 'json/example1.json'
parse_text = json2dataclass('Example1', json.load(open(filepath)))
open('example1.py', 'w').write(parse_text)
[json/example1.json]
{
"pascalName1": {
"pascalName2": [
1,
2
]
},
"pascalName3": [
{
"pascalName4": [
{
"pascalName5": {}
}
]
}
]
}
[example1.py]
from typing import Dict, List, Any, Optional
from dataclasses import dataclass
@dataclass
class PascalName1:
pascal_name2: List[int]
def __init__(self, data):
self.pascal_name2 = [(int(i0)) for i0 in data.get("pascalName2")]
@dataclass
class PascalName4I:
pascal_name5: dict
def __init__(self, data):
self.pascal_name5 = dict(data.get("pascalName5"))
@dataclass
class PascalName3I:
pascal_name4: List[PascalName4I]
def __init__(self, data):
self.pascal_name4 = [(PascalName4I(i0)) for i0 in data.get("pascalName4")]
@dataclass
class Example1:
pascal_name1: PascalName1
pascal_name3: List[PascalName3I]
def __init__(self, data):
self.pascal_name1 = PascalName1(data.get("pascalName1"))
self.pascal_name3 = [(PascalName3I(i0)) for i0 in data.get("pascalName3")]
Use example1.py
Run
import sys
sys.path.append('./dataclass')
from example1 import Example1
import json
filepath = 'json/example1.json'
example = Example1(json.load(open(filepath)))
print(example)
print(example.pascal_name1)
print(example.pascal_name3)
Output
Example1(pascal_name1=PascalName1(pascal_name2=[1, 2]), pascal_name3=[PascalName3I(pascal_name4=[PascalName4I(pascal_name5={})])])
PascalName1(pascal_name2=[1, 2])
[PascalName3I(pascal_name4=[PascalName4I(pascal_name5={})])]
Back to HomePage [https://github.com/verssionhack/pyjson2dataclass]
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
pyjson2dataclass-2.1.6.tar.gz
(33.9 kB
view details)
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file pyjson2dataclass-2.1.6.tar.gz.
File metadata
- Download URL: pyjson2dataclass-2.1.6.tar.gz
- Upload date:
- Size: 33.9 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.0.1 CPython/3.12.8
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
677727a0e0445150ae426dc2449f6a37e32e26689c197160173fe113c287b688
|
|
| MD5 |
2863f8eb7118e8c0ec464cba4e20730a
|
|
| BLAKE2b-256 |
1b70bbbc4944bc5c4d7a324fbf922795bb9150795a41644b1f331be95332a357
|
File details
Details for the file pyjson2dataclass-2.1.6-py3-none-any.whl.
File metadata
- Download URL: pyjson2dataclass-2.1.6-py3-none-any.whl
- Upload date:
- Size: 36.2 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.0.1 CPython/3.12.8
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
15f1aa73630437c6e3559d13f445839a0dae2a6f54a7d84544d21174c832b28b
|
|
| MD5 |
00aa07f88a313558540388a9c3bc90cf
|
|
| BLAKE2b-256 |
eee44b360bd676d145731abc3a53e3463f40178575d7e21533e8e1903592875f
|