我有JSON数据,我想解析它。
我使用了下面的代码:
def json_update(request):
j = urllib2.urlopen('http://ec2-72-44-51-113.compute-1.amazonaws.com:8001/get_latest_verification')
j_obj = json.load(j)
print j_obj.status
return HttpResponse(j_obj.status)
但我发现了一个错误:
AttributeError at/json\u更新
“list”对象没有“status”属性
我的json数据:
[{"status": "Registered", "credential": "10000323xsds", "scan_time": "Jan.15,2014, 03:30 pm", "asset_code": "cls103", "emp_id": "LS07", "location": "BLR-10", "auth_code": "DSC(Verisign", "operator": "pradeep", "id": 538}]
解析json数据的正确方法是什么。
但当我把代码更新为:
更新代码:
def json_update(request):
j = urllib2.urlopen('http://ec2-72-44-51-113.compute-1.amazonaws.com:8001/get_latest_verification')
j_obj = json.load(j)
for jo in j_obj:
print j_obj[jo]['status']
return HttpResponse(j_obj[jo]['status'])
我得到错误:
TypeError at/json_update
列表索引必须是整数,而不是dict
你说你的json数据是:
这意味着当你做
j_obj = json.load(j)
时,你的j_obj
是一个列表。(注意外面的[ ]
)。这就是为什么当你做print j_obj.status
的时候,你得到了一个错误“list”对象没有属性“status”您更新的代码:
这是在Python中使用
for _ in _
循环的错误方法,您这样做与在Javascript中一样。在Python中,您可以这样编写:这将遍历外部列表中的项(只有一个项,即dict),并打印该dict的
'status'
键您可以看到
for _ in _
循环为您提供循环列表中的实际项,而不是索引。所以在你的例子中,jo
是一个dict,这就是为什么当你试图做j_obj[jo]
时,你得到的错误列表索引必须是整数,而不是dict“。请参见此处的教程:
https://wiki.python.org/moin/ForLoop
您应该将
status
作为字典项访问,而不是作为属性访问。 这本词典是一个单子。所以
print
,return
语句应该读为:更新
要打印所有键、值对:
相关问题 更多 >
编程相关推荐