Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/322.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何解析python django中的json数据?_Python_Django_Json - Fatal编程技术网

如何解析python django中的json数据?

如何解析python django中的json数据?,python,django,json,Python,Django,Json,我有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数据,我想解析它

我使用了下面的代码:

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\u更新

“列表”对象没有属性“状态”

我的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\u更新时出现类型错误


列表索引必须是整数,而不是dict

您应该将
状态作为字典项而不是属性来访问。
字典是一个列表中的一项

因此,
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()
))
对于键,j_obj[0]中的值。项()
打印键、值
返回HttpResponse(“\n.join”(#或“
”.join {}{}。格式(键,值) 对于键,j_obj[0]中的值。项() ))
您说您的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
是一个列表。(注意外面的
[]
)。这就是为什么当您打印j_obj.status时出现错误“'list'对象没有属性'status'”

您的更新代码:

for jo in j_obj: 
    print j_obj[jo]['status']
这是在Python中使用
for uin
循环的错误方法,就像在Javascript中一样。在Python中,您可以这样编写:

for jo in j_obj: 
    print jo['status']
这将遍历外部列表中的项目(您有一个项目,它是一个dict),并打印该dict的
'status'

您可以看到
for uuin
循环为您提供了正在循环的列表中的实际项目,而不是索引。因此,在您的例子中,
jo
是一个dict,这就是为什么您在尝试执行
j_obj[jo]
时出现错误“列表索引必须是整数,而不是dict”

请参见此处的教程:

问题不在于json解析。如果你做了j_obj[0]['status'],那么它会工作得很好。是的,所有的键值对…我更新了代码,请检查一下