如何解析 json data python django



我有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

"

列表"对象没有属性"状态"

我的 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数据是:

[{"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你得到错误"'列表'对象没有属性'状态'"

更新后的代码会:

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

您应该将status作为字典项而不是属性进行访问。字典是列表中的一个项目。

因此,printreturn语句应为:

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()
))

最新更新