如何解析json数据python django?
Posted
技术标签:
【中文标题】如何解析json数据python django?【英文标题】:How to parse json data python django? 【发布时间】:2014-02-03 18:44:36 【问题描述】:我有 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)
但我得到了错误:
/json_update 处的 AttributeError
'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'])
我收到错误:
/json_update 处的类型错误
列表索引必须是整数,而不是字典
【问题讨论】:
问题不在于 json 解析。如果你做了 j_obj[0]['status'] 那么它会工作得很好。 【参考方案1】:你说你的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]
这意味着当您执行j_obj = json.load(j)
时,您的j_obj
是一个列表。 (注意外面的[ ]
)。这就是为什么当您执行 print j_obj.status
时会收到错误 "'list' object has no attribute 'status'"
您更新后的代码:
for jo in j_obj:
print j_obj[jo]['status']
这是在 Python 中使用 for _ in _
循环的错误方法,您这样做就像在 javascript 中一样。在 Python 中你可以这样写:
for jo in j_obj:
print jo['status']
这将遍历外部列表中的项目(您有一个项目,它是一个字典)并打印该字典的 'status'
键。
您可以看到for _ in _
循环为您提供了您正在循环的列表中的实际项目,而不是索引。因此,在您的情况下,jo
是一个字典,这就是为什么您在尝试执行 j_obj[jo]
时收到错误“列表索引必须是整数,而不是字典”。
在此处查看教程:https://wiki.python.org/moin/ForLoop
【讨论】:
【参考方案2】:您应该将status
作为字典项访问,而不是作为属性访问。
字典是列表中的一项。
所以print
、return
语句应该读作:
print j_obj[0]['status']
return HttpResponse(j_obj[0]['status'])
更新
打印所有键值对:
for key, value in j_obj[0].items():
print key, value
return HttpResponse('\n'.join( # OR '<br>'.join
' '.format(key, value)
for key, value in j_obj[0].items()
))
【讨论】:
是的所有键值对...我更新了代码你也请检查一下以上是关于如何解析json数据python django?的主要内容,如果未能解决你的问题,请参考以下文章
如何在 Django 视图中使用 ajax POST 解析 json 数据