检索十进制值并在python中创建json

时间:2019-04-17 10:59:28

标签: python json python-3.x

我正在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:检测到循环引用

1 个答案:

答案 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__