Metadata-Version: 2.1
Name: dataclasses-json
Version: 0.0.12
Summary: Easily serialize dataclasses to and from JSON
Home-page: https://github.com/lidatong/dataclasses-json
Author: lidatong
Author-email: charles.dt.li@gmail.com
License: Unlicense
Keywords: dataclasses json
Platform: UNKNOWN
Requires-Python: >=3.6
Description-Content-Type: text/markdown
Provides-Extra: dev
Requires-Dist: dataclasses; python_version == "3.6"
Provides-Extra: dev
Requires-Dist: pytest; extra == 'dev'
Requires-Dist: ipython; extra == 'dev'
Requires-Dist: mypy; extra == 'dev'
Requires-Dist: hypothesis; extra == 'dev'

# Dataclasses JSON

This library provides a simple API for encoding and decoding [dataclasses](https://www.python.org/dev/peps/pep-0557/) to and from JSON.

It's recursive (see caveats below), so you can easily work with nested dataclasses.

In addition to the supported types in the [py to JSON table](https://docs.python.org/3/library/json.html#py-to-json-table), any arbitrary
[Collection](https://docs.python.org/3/library/collections.abc.html#collections.abc.Collection) type is supported (they are encoded into JSON arrays, but decoded into the original collection types).

**The [latest release](https://github.com/lidatong/dataclasses-json/releases/latest) is compatible with both Python 3.7 and Python 3.6 (with the dataclasses backport).** 

## Quickstart
`pip install dataclasses-json`

```python
from dataclasses import dataclass
from dataclasses_json import DataClassJsonMixin

@dataclass
class MyDataClass(DataClassJsonMixin):
    name: str

my_dataclass_instance = MyDataClass('example')

# Encoding to JSON
some_json_string = my_dataclass_instance.to_json()

# Decoding from JSON
MyDataClass.from_json(some_json_string)
```

## A larger example

```python
from dataclasses import dataclass
from dataclasses_json import DataClassJsonMixin
from typing import List


@dataclass(frozen=True)
class Minion(DataClassJsonMixin):
    name: str


@dataclass(frozen=True)
class Boss(DataClassJsonMixin):
    minions: List[Minion]

boss = Boss([Minion('evil minion'), Minion('very evil minion')])
boss_json = """
{
    "minions": [
        {
            "name": "evil minion"
        },
        {
            "name": "very evil minion"
        }
    ]
}
""".strip()

assert boss.to_json(indent=4) == boss_json
assert Boss.from_json(boss_json) == boss
```


## Caveats
Data Classes that contain forward references (e.g. recursive dataclasses) are not currently supported.


