尝试在自定义对象上执行JSON转储时的Python 2.6 TyperError

时间:2016-12-29 17:06:38

标签: python json

我使用Python 2.6和simplejson版本3.10.0

我是Python新手所以请原谅代码中的任何错误或缺少" python-ness"。我当然愿意接受建设性的批评。

我有一个我用三个属性(min,max和value)创建的自定义对象。我将这些对象的列表添加为字典中的键的值。键是变量名,值是自定义对象列表。我想做一个这个字典的JSON转储,并且看起来像这样:

{
"transforms": {
    "variable1":[
      {min:200,max:300,value:10},
      {min:300,max:500,value:20}
    ]
  }
}

问题是我在进行json转储调用时一直收到此错误:

TypeError: {min:200,max:300,value:10} is not JSON serializable

我可能会在定义自定义对象时遗漏或做错,但我还没有弄明白。这是完整的Python代码:

def createTransform(minBin, maxBin, value):
    transform = Transform(minBin, maxBin, value)
    return transform

def createDict():
    finalDict = {}
    varTransforms = []
    varTransforms.append(createTransform(200, 300, 10))
    varTransforms.append(createTransform(400, 500, 20))
    finalDict.update({"variable1":varTransforms})
    return finalDict


class Transform:
    minBin = 0
    maxBin = 0
    value = 0

    def __init__(self, minBin, maxBin, value):
        self.minBin = minBin
        self.maxBin = maxBin
        self.value = value

    def __str__(self):
        return "{" + "min:" + str(self.minBin) + "," + "max:" + str(self.maxBin) + "," + "value:" + str(self.value) + "}"

    def __repr__(self):
        return self.__str__()

allTransforms = createDict()
print json.dumps({'transforms': allTransforms})

任何帮助表示赞赏,谢谢。

此外,如果我改变,我可以让它工作 allTransforms = createDict()allTransforms = str(createDict())

但是它导致有额外的引用,并且在Json.dumps的结果上执行.strip('"')不会删除它们。

0 个答案:

没有答案