Metadata-Version: 2.2
Name: pyjson2dataclass
Version: 2.1.9
Summary: Parse json to dataclass
Author: yinpeach
Project-URL: Homepage, https://github.com/verssionhack
Project-URL: Documentation, https://github.com/verssionhack/pyjson2dataclass/README.md
Project-URL: Repository, https://github.com/verssionhack/pyjson2dataclass.git
Keywords: dataclass,json,yinpeach
Requires-Python: >=3.9
Description-Content-Type: text/markdown
License-File: LICENSE
Requires-Dist: case-convert

# 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]
