使用python访问json中的值

我有一个如下的 JSON 字符串

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

我想访问FromPortToPort价值观。

我努力了 print(typ_json['FromPort'])

但我得到了错误:

TypeError:列表索引必须是整数或切片,而不是 str


潇湘沐
浏览 319回答 3
3回答

呼啦一阵风

你需要转换json为dictionaryimport jsondata = json.loads(typ_json)print(data['FromPort'])有时json可能会给出一些错误。在这种情况下,您可以使用ast.literal_evalimport astdata = ast.literal_eval(typ_json)print(data['FromPort'])

当年话下

那是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

慕村9548890

import jsonimport asttyp_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'])
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python