Estaba tratando de verificar si los objetos eran JSON serializables o no porque tenía un diccionario que tenía un montón de cosas y en este punto es más fácil recorrer sus claves y encontrar si son JSON serializables y eliminarlas. Algo como (aunque esto comprueba si su función):
def remove_functions_from_dict(arg_dict): ''' Removes functions from dictionary and returns modified dictionary ''' keys_to_delete = [] for key,value in arg_dict.items(): if hasattr(value, '__call__'): keys_to_delete.append(key) for key in keys_to_delete: del arg_dict[key] return arg_dict¿Hay alguna forma de que la declaración if verifique los objetos serializables JSON y los elimine del diccionario de una manera similar a la anterior?
La respuesta de @ shx2 es lo suficientemente buena, pero es mejor especificar qué excepciones está detectando.
def is_jsonable(x): try: json.dumps(x) return True except (TypeError, OverflowError): return FalseOverflowError se lanza cuando x contiene un número que es demasiado grande para que JSON lo codifique. Una respuesta relacionada se puede encontrar aquí .
Más fácil pedir perdón que permiso .
import json def is_jsonable(x): try: json.dumps(x) return True except: return FalseLuego en tu código:
for key,value in arg_dict.items(): if not is_jsonable(value): keys_to_delete.append(key)