我想在Python中将字典序列化为JSON。我有这个'str'对象没有属性' dict '错误。这是我的代码......
from django.utils import simplejson
class Person(object):
a = ""
person1 = Person()
person1.a = "111"
person2 = Person()
person2.a = "222"
list = {}
list["first"] = person1
list["second"] = person2
s = simplejson.dumps([p.__dict__ for p in list])
例外是;
Traceback (most recent call last):
File "/base/data/home/apps/py-ide-online/2.352580383594527534/shell.py", line 380, in post
exec(compiled_code, globals())
File "<string>", line 17, in <module>
AttributeError: 'str' object has no attribute '__dict__'
答案 0 :(得分:7)
怎么样
s = simplejson.dumps([p.__dict__ for p in list.itervalues()])
答案 1 :(得分:4)
您认为[p.__dict__ for p in list]
有什么作用?
由于list
不是列表,而是字典,for p in list
会迭代字典的键值。键是字符串。
切勿将list
或dict
等名称用于变量。
永远不要对数据类型撒谎。您的list
变量是字典。称之为“person_dict”,你会更开心。
答案 2 :(得分:3)
您正在使用字典而不是列表list
,以便您的代码可以将其更改为列表,例如。
list = []
list.append(person1)
list.append(person2)