Как исключить определенные поля для сериализации с помощью jsonpickle?

Я использую расширение SQLAlchemy с Flask. При сериализации моих моделей (которые также используются для операций с базой данных), используя jsonpickle, я хочу, чтобы некоторые конкретные атрибуты игнорировались. Есть ли способ, который позволяет мне устанавливать эти правила?

SQLAlchemy добавляет к объекту атрибут с именем _sa_instance_state . Одним словом, я не хочу, чтобы это поле находилось на выходе JSON.

One Solution collect form web for “Как исключить определенные поля для сериализации с помощью jsonpickle?”

Вы не можете сказать, что сортировщик по умолчанию игнорирует что-то, нет.

jsonpickle поддерживает методы pickle __getstate__ и __setstate__ . Если ваши классы реализуют эти два метода, все, что возвращается, затем используется jsonpickle для представления состояния вместо этого. Оба метода необходимо реализовать.

Если __getstate__ не реализован, jsonpickle вместо этого использует атрибут __dict__ , поэтому ваша собственная версия просто должна использовать тот же словарь, удалить ключ _sa_instance_state и вы закончите:

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

Независимо от того, __getstate__ возвраты __getstate__ будут обработаны дальше, рекурсивно, нет необходимости беспокоиться об обработке подобъектов там.

Если добавление __getstate__ и __setstate__ не является параметром, вы также можете зарегистрировать собственный обработчик сериализации для своего класса; недостатком является то, что в то время как __getstate__ может уйти, просто вернув словарь, пользовательскому обработчику необходимо будет вернуть полностью сплющенное значение.

  • Что такое хороший способ организовать ваши модели, соединения, если вы хотите использовать SQLAlchemy для подключения нескольких баз данных к различным приложениям?
  • AttributeError: объект 'unicode' не имеет атрибута '_sa_instance_state'
  • Alembic: Как перенести пользовательский тип в модель?
  • sqlalchemy: выполнение raw sql с привязками параметров
  • Выбор отдельных значений столбцов в SQLAlchemy / Elixir
  • Как отправить результаты запроса в поле WTForm?
  • как сохранить двоичный файл, полученный Flask в postgres
  • Подзапрос SQLAlchemy - среднее количество сумм
  • Как удалить запись по id в Flask-SQLAlchemy
  • SQLAlchemy Соединение с проблемой подзапроса
  • Как использовать SQLAlchemy для беспрепятственного доступа к нескольким базам данных?
  • Python - лучший язык программирования в мире.