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.3.tar.gz
(32.8 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.3.tar.gz.
File metadata
- Download URL: pyjson2dataclass-2.1.3.tar.gz
- Upload date:
- Size: 32.8 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.0.1 CPython/3.12.8
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
b3f1b41a20b9397ae084528429a8b724da90a2ce5e7b80c5275bddc463d8a9be
|
|
| MD5 |
aa2d61390aa2c40a4dead58d09565263
|
|
| BLAKE2b-256 |
ff68d054e87b3ffef001dbb68371544e85895045200ee7d0dedac4d54c5c694f
|
File details
Details for the file pyjson2dataclass-2.1.3-py3-none-any.whl.
File metadata
- Download URL: pyjson2dataclass-2.1.3-py3-none-any.whl
- Upload date:
- Size: 35.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 |
61bc20a0379727ee236e111c7cb1991c7198a4d652ae893a3841b4505d700d1c
|
|
| MD5 |
b1f72a15fc73d4941b9e88073d12b306
|
|
| BLAKE2b-256 |
832b159f7a9031151d4480f09beab3cf6187f62265454b7c989ec99a1fc067ae
|