dataclasses-json icon indicating copy to clipboard operation
dataclasses-json copied to clipboard

`to_dict` fails when a dict key is a tuple

Open agroszer opened this issue 4 years ago • 1 comments

from typing import List, Optional, Dict, cast, Tuple, Union
from dataclasses import dataclass, field
from dataclasses_json import DataClassJsonMixin

@dataclass
class State(DataClassJsonMixin):

    foo: Dict[Tuple[str, str], str]

state = State(
    foo = {('abc', 'cde'): 'efg'}
)
state.to_dict()
  File "/work/ve/lib/python3.7/site-packages/dataclasses_json/api.py", line 88, in to_dict
    return _asdict(self, encode_json=encode_json)
  File "/work/ve/lib/python3.7/site-packages/dataclasses_json/core.py", line 321, in _asdict
    value = _asdict(getattr(obj, field.name), encode_json=encode_json)
  File "/work/ve/lib/python3.7/site-packages/dataclasses_json/core.py", line 331, in _asdict
    obj.items())
TypeError: unhashable type: 'list'

agroszer avatar Oct 06 '20 09:10 agroszer

I think rather than trying to patch this, we should throw a proper exception because tuples as keys in dictionaries is not json serializable.

@george-zubrienko wdyt?

matt035343 avatar Jul 13 '23 10:07 matt035343