根据指定值过滤JSON字符串并提取对应键
根据IP值从JSON中提取对应网卡键的解决方案
给定如下格式不可控的JSON字符串:
{ "lo": [ "127.0.0.1", "::1" ], "ens5": [ "10.77.23.18", "fe80::4dd:baff:fecb:ef91" ], "ens6": [ "10.77.18.149", "fe80::445:b3ff:fe48:bd98" ] }
需求是:输入一个IP值(比如fe80::4dd:baff:fecb:ef91),提取出对应的网卡键(比如ens5)。
实现思路
核心逻辑是:先将JSON字符串解析为字典结构,再遍历字典的键值对,检查目标IP是否存在于当前键对应的IP列表中,匹配成功则返回该键。
Python 示例代码
import json # 原始JSON字符串(格式不可控不影响解析) json_str = ''' { "lo": [ "127.0.0.1", "::1" ], "ens5": [ "10.77.23.18", "fe80::4dd:baff:fecb:ef91" ], "ens6": [ "10.77.18.149", "fe80::445:b3ff:fe48:bd98" ] } ''' target_ip = "fe80::4dd:baff:fecb:ef91" result = None # 解析JSON为字典 network_data = json.loads(json_str) # 遍历网卡和对应的IP列表 for interface, ips in network_data.items(): if target_ip in ips: result = interface break # 找到第一个匹配项就停止,若允许多匹配可去掉break # 输出结果 print(result) # 输出: ens5
额外处理场景
- 如果存在多个网卡包含同一个IP,去掉代码中的
break即可获取所有匹配的网卡键,结果可存入列表统一返回。 - 如果目标IP不存在,
result会保持None,可添加判断逻辑输出自定义提示信息。
内容的提问来源于stack exchange,提问作者jeffery
相关产品推荐
相关产品推荐

