JSON = Union[Dict[str, JSON], List[JSON], str, bool, int, NoneType]
Looks like there is a work in progress though[1] and people in the ticket provided some workarounds[2][3] for now.
[1] https://github.com/python/mypy/issues/731
[2] https://github.com/python/mypy/issues/731#issuecomment-53990...
[3] https://gist.github.com/catb0t/bd82f7815b7e95b5dd3c3ad294f3c...