访问加载的JSON对象的数据成员的能力不一致

时间:2009-10-27 23:39:42

标签: python django simplejson

我正在使用simplejson在Django中加载JSON字符串,因此:

obj = json.loads('{"name": "joe"}')
person = obj.name

这会引发错误:

'dict' object has no attribute 'name'

但是当我将obj向下传递到视图模板并通过{{ obj.name }}将其打印出来时,它就可以了!为什么呢?

2 个答案:

答案 0 :(得分:7)

我不确定它的Django方面是如何工作的,但是从json.loads得到的对象是Python dict对象。这意味着它没有其键的属性,但您可以像访问任何其他词典一样访问它们:

obj = json.loads('{"name": "joe"}')
person = obj['name']

答案 1 :(得分:4)

json.loads将json加载到python字典中。因此,您必须像字典一样访问它,即data['key']

现在,在django模板方面,查看官方django templates文档。

直接引用:

  

从技术上讲,当模板系统遇到一个点时,它会按以下顺序尝试以下查找:

     
      
  • 字典查找
  •   
  • 属性查找
  •   
  • 方法调用
  •   
  • 列表索引查找
  •   

基本上,django模板允许您使用data.key语法访问字典项。