# Parse json to python dataclass
## Installion
```sh
pip3 install pyjson2dataclass
```
## Usage
### json2dataclass
```txt
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
```
```sh
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
```txt
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
```
```sh
json2dataclass_test -j json -d dataclass
```
We can use 'json2dataclass_test' to check dataclass python quickly
## Examples
```python
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]
```json
{
"pascalName1": {
"pascalName2": [
1,
2
]
},
"pascalName3": [
{
"pascalName4": [
{
"pascalName5": {}
}
]
}
]
}
```
### [example1.py]
```python
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
```python
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
```txt
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]
Raw data
{
"_id": null,
"home_page": null,
"name": "pyjson2dataclass",
"maintainer": null,
"docs_url": null,
"requires_python": ">=3.9",
"maintainer_email": null,
"keywords": "dataclass, json, yinpeach",
"author": "yinpeach",
"author_email": null,
"download_url": "https://files.pythonhosted.org/packages/12/19/1a9b8f8452282e7c5034265a75431705026607619dd8edf06413f4b19888/pyjson2dataclass-2.1.7.tar.gz",
"platform": null,
"description": "# Parse json to python dataclass\n\n## Installion\n\n```sh\npip3 install pyjson2dataclass\n```\n\n## Usage\n\n### json2dataclass\n\n```txt\nusage: json2dataclass [-h] [-d SAVE_DIR] [-i [INPUT ...]] [-p] [-f]\n\noptions:\n -h, --help show this help message and exit\n -d SAVE_DIR, --save-dir SAVE_DIR\n specify the directory parsed dataclass file save to\n -i [INPUT ...], --input [INPUT ...]\n specify the input json file path\n -p, --pascal use pascalName for parsed dataclass filename\n -f, --force enable overwrite exists dataclass\n\n```\n\n```sh\njson2dataclass -i <json file1> <json file2> ... -d dataclass\n```\nWhat above did is parse json file passed by `-i` to dataclass python file and save them to directory 'dataclass'\n\n### json2dataclass_test\n\n```txt\nusage: json2dataclass_test [-h] [-d DATACLASS_DIR] [-j JSON_DIR]\n\noptions:\n -h, --help show this help message and exit\n -d DATACLASS_DIR, --dataclass-dir DATACLASS_DIR\n specify parsed dataclass directory to be test\n -j JSON_DIR, --json-dir JSON_DIR\n specify json directory to be test\n```\n\n```sh\njson2dataclass_test -j json -d dataclass\n```\n\nWe can use 'json2dataclass_test' to check dataclass python quickly\n\n\n\n## Examples\n\n```python\nfrom pyjson2dataclass import json2dataclass\nimport json\n\n\nfilepath = 'json/example1.json'\n\nparse_text = json2dataclass('Example1', json.load(open(filepath)))\nopen('example1.py', 'w').write(parse_text)\n```\n\n### [json/example1.json]\n```json\n{\n \"pascalName1\": {\n \"pascalName2\": [\n 1,\n 2\n ]\n },\n \"pascalName3\": [\n {\n \"pascalName4\": [\n {\n \"pascalName5\": {}\n }\n ]\n }\n ]\n}\n```\n### [example1.py]\n```python\nfrom typing import Dict, List, Any, Optional\nfrom dataclasses import dataclass\n\n\n@dataclass\nclass PascalName1:\n pascal_name2: List[int]\n\n def __init__(self, data):\n self.pascal_name2 = [(int(i0)) for i0 in data.get(\"pascalName2\")]\n\n\n@dataclass\nclass PascalName4I:\n pascal_name5: dict\n\n def __init__(self, data):\n self.pascal_name5 = dict(data.get(\"pascalName5\"))\n\n\n@dataclass\nclass PascalName3I:\n pascal_name4: List[PascalName4I]\n\n def __init__(self, data):\n self.pascal_name4 = [(PascalName4I(i0)) for i0 in data.get(\"pascalName4\")]\n\n\n@dataclass\nclass Example1:\n pascal_name1: PascalName1\n pascal_name3: List[PascalName3I]\n\n def __init__(self, data):\n self.pascal_name1 = PascalName1(data.get(\"pascalName1\"))\n self.pascal_name3 = [(PascalName3I(i0)) for i0 in data.get(\"pascalName3\")]\n```\n\n## Use example1.py\n### Run\n```python\nimport sys\nsys.path.append('./dataclass')\n\nfrom example1 import Example1\nimport json\n\nfilepath = 'json/example1.json'\n\nexample = Example1(json.load(open(filepath)))\nprint(example)\nprint(example.pascal_name1)\nprint(example.pascal_name3)\n```\n### Output\n```txt\nExample1(pascal_name1=PascalName1(pascal_name2=[1, 2]), pascal_name3=[PascalName3I(pascal_name4=[PascalName4I(pascal_name5={})])])\nPascalName1(pascal_name2=[1, 2])\n[PascalName3I(pascal_name4=[PascalName4I(pascal_name5={})])]\n```\n\n## Back to HomePage [https://github.com/verssionhack/pyjson2dataclass]\n",
"bugtrack_url": null,
"license": null,
"summary": "Parse json to dataclass",
"version": "2.1.7",
"project_urls": {
"Documentation": "https://github.com/verssionhack/pyjson2dataclass/README.md",
"Homepage": "https://github.com/verssionhack",
"Repository": "https://github.com/verssionhack/pyjson2dataclass.git"
},
"split_keywords": [
"dataclass",
" json",
" yinpeach"
],
"urls": [
{
"comment_text": "",
"digests": {
"blake2b_256": "b5cabf7d71a4ccf354a2d3dabd64012a0982c0e0bb7a6dd3fae565ebb96c6706",
"md5": "259d3817b789eb36c01959f8899936bb",
"sha256": "7e611da5f549ce2451d07e799316905869c9dfe716d52b27aa45daa78e047a35"
},
"downloads": -1,
"filename": "pyjson2dataclass-2.1.7-py3-none-any.whl",
"has_sig": false,
"md5_digest": "259d3817b789eb36c01959f8899936bb",
"packagetype": "bdist_wheel",
"python_version": "py3",
"requires_python": ">=3.9",
"size": 36243,
"upload_time": "2025-01-15T05:38:15",
"upload_time_iso_8601": "2025-01-15T05:38:15.432459Z",
"url": "https://files.pythonhosted.org/packages/b5/ca/bf7d71a4ccf354a2d3dabd64012a0982c0e0bb7a6dd3fae565ebb96c6706/pyjson2dataclass-2.1.7-py3-none-any.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "12191a9b8f8452282e7c5034265a75431705026607619dd8edf06413f4b19888",
"md5": "8fe60d46c261640af7e5bddacea98d2c",
"sha256": "152b6f8b96f495a95a9e3fcc899ab8bf8fe3319bf194a4119a0ad076b9bf3977"
},
"downloads": -1,
"filename": "pyjson2dataclass-2.1.7.tar.gz",
"has_sig": false,
"md5_digest": "8fe60d46c261640af7e5bddacea98d2c",
"packagetype": "sdist",
"python_version": "source",
"requires_python": ">=3.9",
"size": 33975,
"upload_time": "2025-01-15T05:38:18",
"upload_time_iso_8601": "2025-01-15T05:38:18.059941Z",
"url": "https://files.pythonhosted.org/packages/12/19/1a9b8f8452282e7c5034265a75431705026607619dd8edf06413f4b19888/pyjson2dataclass-2.1.7.tar.gz",
"yanked": false,
"yanked_reason": null
}
],
"upload_time": "2025-01-15 05:38:18",
"github": true,
"gitlab": false,
"bitbucket": false,
"codeberg": false,
"github_user": "verssionhack",
"github_project": "pyjson2dataclass",
"travis_ci": false,
"coveralls": false,
"github_actions": false,
"lcname": "pyjson2dataclass"
}