我使用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('"')不会删除它们。