我用json.dumps
序列化SQLAlchemy映射对象。我希望我的对象的association proxy属性也能正确序列化。默认情况下,它们不能正确序列化,因此我不得不编写一个特定的JSON编码器:
from sqlalchemy.ext.associationproxy import _AssociationList
class MyEncoder(JSONEncoder):
def default(self, obj):
if isinstance(obj, _AssociationList):
return list(obj)
return JSONEncoder.default(self, obj)
这看起来不太好,因为我需要导入_AssociationList
,这是SQLAlchemy的私有属性。在
还有其他选择吗?在
您可以做一个更通用的测试,而不是检查特定于\u AssociationList的类型:is“like”是一个列表吗?然后将其序列化为列表!(duck类型,请参见Python: check if an object is a list or tuple (but not string))。在
这将把集合、元组、关联列表和列表本身视为列表!但不是字符串、整数等等。在
相关问题 更多 >
编程相关推荐