python json sqlalchemy flask jsonpickle

python - ¿Cómo excluir campos específicos en la serialización con jsonpickle?



sqlalchemy flask (1)

No puede decirle al selector de clases predeterminado que ignore algo, no.

jsonpickle es compatible con los métodos pickle __getstate__ y __setstate__ . Si sus clases implementan esos dos métodos, jsonpickle utilizará lo que se jsonpickle para representar el estado en su lugar. Ambos métodos necesitan ser implementados.

Si __getstate__ no está implementado, jsonpickle usa el atributo __dict__ en su lugar, por lo que su propia versión simplemente necesita usar el mismo diccionario, elimine la clave _sa_instance_state y listo:

def __getstate__(self): state = self.__dict__.copy() del state[''_sa_instance_state''] return state def __setstate__(self, state): self.__dict__.update(state)

Cualquiera que sea __getstate__ returns se procesará más recursivamente, no hay necesidad de preocuparse por manejar subobjetos allí.

Si agregar __getstate__ y __setstate__ no es una opción, también puede registrar un manejador de serialización personalizado para su clase; la desventaja es que mientras __getstate__ puede salirse con la suya simplemente devolviendo un diccionario, un controlador personalizado necesitará devolver un valor completamente aplanado.

Estoy usando la extensión SQLAlchemy con Flask. Mientras serializo mis modelos (que también se usan para operaciones de bases de datos) utilizando jsonpickle, quiero que se ignoren algunos atributos específicos. ¿Hay alguna manera que me permita establecer esas reglas?

SQLAlchemy agrega un atributo denominado _sa_instance_state al objeto. En una palabra, no quiero que este campo esté en la salida JSON.