'str'对象没有属性'__dict__'

时间:2011-09-21 10:10:36

标签: python json serialization dictionary

我想在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__'

3 个答案:

答案 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会迭代字典的键值。键是字符串。

切勿将listdict等名称用于变量。

永远不要对数据类型撒谎。您的list变量是字典。称之为“person_dict”,你会更开心。

答案 2 :(得分:3)

您正在使用字典而不是列表list,以便您的代码可以将其更改为列表,例如。

list = []
list.append(person1)
list.append(person2)