我正在python中创建一个响应模型,在其中为属性之一分配值,比如23.12。我正在使用以下代码将respone模型转换为json对象。
orders.append(json.dumps(json.dumps(response, default=obj_dict)))
obj_dict的定义如下:
def obj_dict(obj):
if isinstance(obj,decimal.Decimal):
return obj
return obj.__dict__
由于十进制不具有 dict 属性,因此考虑了解析上面的值并返回obj,但收到以下错误:
ValueError:检测到循环引用
答案 0 :(得分:0)
json.dumps遍历字典,对于无法序列化的每个对象,它将其传递给作为默认参数提供的函数。
这是您的序列化器的外观:
def dec_serializer(o):
if isinstance(o, decimal.Decimal):
# if current object is an instance of the Decimal Class,
# return a float version of it which json can serialize
return float(o)
您当前的代码说,
def obj_dict(obj):
if isinstance(obj,decimal.Decimal):
# If obj is an instance of Decimal class return it
# Which is basically returning whatever is coming
return obj
# and for all other types of objects return their dunder dicts
return obj.__dict__