为了账号安全,请及时绑定邮箱和手机立即绑定

Json提取数据报错感激不尽

Json提取数据报错感激不尽

ITMISS 2019-06-20 10:18:09
题目描述提取data中的x,并将其相加。data={"note":"This","count":[{"id":"001","x":"2","name":"Chuck"},{"id":"009","x":"7","name":"Brent"}]}题目来源及自己的思路用json提取相关代码//请把代码文本粘贴到下方(请勿用图片代替代码)importurllib.request,urllib.parse,urllib.errorfrombs4importBeautifulSoupimportsslimportjsonctx=ssl.create_default_context()ctx.check_hostname=Falsectx.verify_mode=ssl.CERT_NONEdata={"note":"This","count":[{"id":"001","x":"2","name":"Chuck"},{"id":"009","x":"7","name":"Brent"}]}info=json.loads(data)print('Usercount:',len(info))foritemininfo:print('Name',item['name'])print('Id',item['id'])print('Attribute',item['x'])你期待的结果是什么?实际看到的错误信息又是什么?1.我期待的结果是x2x72.但执行结果提示TypeError:theJSONobjectmustbestr,bytesorbytearray,notdict3.我试了下如果将data转化为以下样式就可以了,但不知如何转化。另外,如果用data=data['count'],转化出来的数据不带”'''“,导致还是会报错。data='''[{"id":"001","x":"2","name":"Chuck"},{"id":"009","x":"7","name":"Brent"}]'''
查看完整描述

2 回答

?
富国沪深

TA贡献1790条经验 获得超9个赞

json.loads这个函数是将序列化后的json字符串反序列化成Python对象,而你代码中的data就是Python对象,你还转啥啊,直接用啊
                            
查看完整回答
反对 回复 2019-06-20
?
小怪兽爱吃肉

TA贡献1852条经验 获得超1个赞

json加载json格式的数据时,数据应该是一个字符串,你传入的是一个Python的dict对象,这个对象只是长得和json数据类似,对于JavaScript语言来说二者可以当做是一种东西.对于Python来说,一个是字符串,一个是dict对象,不能混为一谈.
改成这样试试
info=json.loads(data.__str__())
                            
查看完整回答
反对 回复 2019-06-20
  • 2 回答
  • 0 关注
  • 877 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号