如何解析API返回JSON中Message字段的键值对(如EventType、FriendlyType等)
实现方法
你提取到的Message内容属于逗号分隔的键值对格式,无需转JSON,直接拆分解析即可,通用逻辑和不同语言的实现方案如下:
通用解析逻辑
- 先以逗号为分隔符,将整段字符串切割为多个独立的
key=value片段 - 对每个片段先去除首尾空白,再按第一个出现的等号切割为键、值两部分
- 将所有键值对存入字典/对象结构,之后直接通过键名访问对应取值即可
Python 实现示例
# 已提取的Message字段内容 message_str = "EventType=Delete, FriendlyType=was deleted, Timestamp=2021-11-08T15:30:45Z, UserId=1111, UserName=me@me.com, IPAddr=(empty), AccountId=22222, AccountName=test-account, ProjectId=test-project" message_dict = {} for item in message_str.split(','): # split第二个参数设为1,仅按第一个等号拆分,避免值内含等号时解析出错 key, value = item.strip().split('=', 1) message_dict[key] = value # 取值测试 print(message_dict['EventType']) # 输出:Delete print(message_dict['FriendlyType']) # 输出:was deleted
JavaScript 实现示例
// 已提取的Message字段内容 const messageStr = "EventType=Delete, FriendlyType=was deleted, Timestamp=2021-11-08T15:30:45Z, UserId=1111, UserName=me@me.com, IPAddr=(empty), AccountId=22222, AccountName=test-account, ProjectId=test-project" const messageObj = {} messageStr.split(',').forEach(item => { // 正则匹配第一个等号拆分,避免值内含等号时解析出错 const [key, value] = item.trim().split(/=(.+)/) messageObj[key] = value }) // 取值测试 console.log(messageObj.EventType) // 输出:Delete console.log(messageObj.FriendlyType) // 输出:was deleted
注意事项
拆分键值对时必须限制仅按第一个等号拆分,避免部分value中包含等号时出现解析错误,上述示例已做对应兼容处理。
内容的提问来源于stack exchange,提问作者skylxne_
相关产品推荐
相关产品推荐

