Some of this was already covered in the comments...
Unfortunately the only data types that can be stored in a json file are those that are described in the JSON specification, which includes arrays, objects, strings, numbers, booleans and null.
When you load a json file in using pythons json module, it automatically converts certain JSON Data Types into the python equivalent. e.g. arrays turn into lists, objects turn into dicts, strings remain strings, null becomes None etc... so what you are asking is kind of impossible.
There are of course ways around this, such as instead of storing tuple which is a type object in python, you can instead store the "tuple" keyword as a string and then write some conversion logic you can run when needed.
Probably a better alternative though is to use the pickle module. The api is identical to the json module, and it can store all python data types with ease, including custom classes in most cases. Pickled files are not human readable unfortunately, but your use case doesn't sound like that is a requirement.
Here is a link to the documentation on the pickle module.
https://docs.python.org/3/library/pickle.html
tupleorboolto JSON, so if you want to use JSON you'll have to convert them to a different representation, for example strings. This still allows you to use theisinstancechecks that you want, so long as you convert them back to the original type from the serialized representation.