pyjson2dataclass


Namepyjson2dataclass JSON
Version 2.1.7 PyPI version JSON
download
home_pageNone
SummaryParse json to dataclass
upload_time2025-01-15 05:38:18
maintainerNone
docs_urlNone
authoryinpeach
requires_python>=3.9
licenseNone
keywords dataclass json yinpeach
VCS
bugtrack_url
requirements No requirements were recorded.
Travis-CI No Travis.
coveralls test coverage No coveralls.
            # 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"
}
        
Elapsed time: 1.49524s