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

使用python访问json中的值

使用python访问json中的值

潇湘沐 2022-01-11 18:03:19
我有一个如下的 JSON 字符串typ_json="{'FromPort': 80, 'IpProtocol': 'tcp', 'IpRanges': [{'CidrIp': '0.0.0.0/0'}], 'Ipv6Ranges': [{'CidrIpv6': '::/0'}], 'PrefixListIds': [], 'ToPort': 80, 'UserIdGroupPairs': []}"我想访问FromPort和ToPort价值观。我努力了 print(typ_json['FromPort'])但我得到了错误:TypeError:列表索引必须是整数或切片,而不是 str
查看完整描述

3 回答

?
呼啦一阵风

TA贡献1802条经验 获得超6个赞

你需要转换json为dictionary


import json

data = json.loads(typ_json)

print(data['FromPort'])

有时json可能会给出一些错误。在这种情况下,您可以使用ast.literal_eval


import ast

data = ast.literal_eval(typ_json)

print(data['FromPort'])


查看完整回答
反对 回复 2022-01-11
?
当年话下

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

那是not有效的JSON。您需要替换 thequotes和load生成的string,例如,


>>> import json

>>> typ_json

"{'FromPort': 80, 'IpProtocol': 'tcp', 'IpRanges': [{'CidrIp': '0.0.0.0/0'}], 'Ipv6Ranges': [{'CidrIpv6': '::/0'}], 'PrefixListIds': [], 'ToPort': 80, 'UserIdGroupPairs': []}"

>>> x = typ_json.replace("'", '"')

>>> json.loads(x) # now it is a `dict` and you can access the values

{u'PrefixListIds': [], u'FromPort': 80, u'IpRanges': [{u'CidrIp': u'0.0.0.0/0'}], u'ToPort': 80, u'IpProtocol': u'tcp', u'UserIdGroupPairs': [], u'Ipv6Ranges': [{u'CidrIpv6': u'::/0'}]}

>>> json.loads(x)['FromPort']

80


查看完整回答
反对 回复 2022-01-11
?
慕村9548890

TA贡献1884条经验 获得超4个赞

import json

import ast


typ_json="{'FromPort': 80, 'IpProtocol': 'tcp', 'IpRanges': [{'CidrIp': '0.0.0.0/0'}], 'Ipv6Ranges': [{'CidrIpv6': '::/0'}], 'PrefixListIds': [], 'ToPort': 80, 'UserIdGroupPairs': []}"


port = ast.literal_eval(typ_json)

print(port['FromPort'])


查看完整回答
反对 回复 2022-01-11
  • 3 回答
  • 0 关注
  • 318 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

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

帮助反馈 APP下载

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

公众号

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