python json解析报错 'unicode' object has no attribute 'has_key'

python 中 json解码时候 解析数据会报错:
报错 ‘unicode’ object has no attribute ‘has_key’
这是因为我们在使用python的 json.loads() 时候.
会将json的string类型转换为 python的unicode类型,这个不是重点
重点是 json数据中某一项的值为None就是为空,这个时候我们是不能用has_key的方法判断该键的值是否含有某个键,
此时就会报出’unicode’ object has no attribute ‘has_key’ 这个错误
例子及解决方法如下:

有一个json数据,我们要取出url的值

import json
json_str = '{"11": "", "10": "", "12": {"picture": [{"latitude": 39.9217, "url": "http://baidu.com", "longitude": 116.461}]}}'
json_data = json.loads(json_str)
#{u'11': u'', u'10': u'', u'12': {u'picture': [{u'latitude': 39.9217, u'url': u'http://baidu.com', u'longitude': 116.461}]}}	

这个json_str里某个键('10''11')的值为空,
那么应该这么判断取出
if json_data['10']:
	if json_data['10']['picture']:
		data_10 = json_data['10']['picture'][0]['url']
			
而不能用下面的方法:python2 字典才有has_key方法
if json_data.has_key("10"):
	if json_data['10'].has_key('picture'):
		data_10 = json_data['10']['picture'][0]['url']
			
这样就会报错:
if json_data['10'].has_key('picture'):
	'unicode' object has no attribute 'has_key'
因为json_data['10']的值为空,不能用has_key方法继续判断了

当然还可以用这种方法:可以在python2和3中都通用
if '10' in json_data:
	if 'picture' in json_data['10']:
		data_10 = json_data['10']['picture'][0]['url']
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值