求助:如何使用Python 3.6解析返回的JSON字符串?
如何用Python 3.6解析这段JSON字符串?
嘿,刚接触Python的话,解析JSON真的没你想的那么复杂!Python自带了专门处理JSON的json模块,完全不用额外装库,我一步步给你演示怎么操作。
首先要提个小细节:你提供的最后一条JSON数据看起来被截断了("city": "Bal..."这里),实际解析时必须保证JSON格式完全合法——比如引号是双引号、逗号位置正确、没有这种不完整的字符串,不然会直接抛出解析错误。我先补全这条数据,用完整的合法JSON来做演示。
步骤1:导入json模块
Python 3.6默认自带这个模块,直接导入就行:
import json
步骤2:准备你的JSON字符串
把你的JSON内容用三重引号包裹(避免转义麻烦):
# 补全了最后一条数据的city字段,确保格式合法 json_str = ''' [{ "src": "125.167.217.133", "dpt": "80", "city": "Balikpapan", "country_flag": "http://assets.ipstack.com/flags/id.svg", "to_char": "26-04-2018" }, { "src": "93.104.209.73", "dpt": "80", "city": null, "country_flag": "http://assets.ipstack.com/flags/de.svg", "to_char": "26-04-2018" }, { "src": "125.167.217.133", "dpt": "443", "city": "Balikpapan", "country_flag": "http://assets.ipstack.com/flags/id.svg", "to_char": "26-04-2018" }] '''
步骤3:解析JSON字符串
用json.loads()方法把JSON字符串转换成Python能直接操作的列表和字典:
data = json.loads(json_str)
现在data就是一个Python列表,每个元素都是一个字典,对应JSON里的每一条数据。
步骤4:访问解析后的数据
你可以像操作普通列表和字典一样获取数据:
- 获取第一条数据的源IP:
print(data[0]['src']) # 输出:125.167.217.133
- 遍历所有数据,打印每个IP和对应的城市(处理city为null的情况):
for item in data: # 当city是null时,Python里会变成None,用or替换成"未知" city = item['city'] or "未知" print(f"IP地址:{item['src']},目标端口:{item['dpt']},城市:{city}")
运行后会输出:
IP地址:125.167.217.133,目标端口:80,城市:Balikpapan IP地址:93.104.209.73,目标端口:80,城市:未知 IP地址:125.167.217.133,目标端口:443,城市:Balikpapan
额外小技巧:如果JSON来自文件
如果你的JSON数据是存在.json文件里的,不用先读成字符串,直接用json.load()方法读取:
with open('your_data.json', 'r', encoding='utf-8') as f: data = json.load(f)
注意事项
- 一定要保证JSON格式合法:比如所有字符串用双引号,
null是小写(解析后会自动变成Python的None),没有多余的逗号或者截断内容; - Python 3.6+会保留字典的插入顺序,所以解析后的字典和JSON里的键顺序是一致的,这点很方便。
内容的提问来源于stack exchange,提问作者DMR
相关产品推荐
相关产品推荐

