You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

API返回含特殊字符的键的数组对象:如何重命名或删除这些键

处理API返回对象中含特殊字符的键(重命名/删除)

嘿,这个问题我太熟悉了!处理API返回的对象里那些带点、空格、%这类特殊字符的键,不管是要删掉还是重命名,在常用编程语言里都有很清晰的实现方式,我给你举两个最常用的场景例子吧:

JavaScript 实现

删除含特殊字符的键

如果只是想直接去掉这些带特殊字符的键,可以遍历对象的键,判断后删除:

// 示例API返回的数组数据
const apiData = [
  { status: 'ok', 'NetRange': '192.168.0.0/24', 'Referral.Server': 'ns.example.com', 'Org Abuse.Handle': 'ABUSE123', 'Usage%': '90' }
];

// 处理每个对象,避免修改原数据
const processedData = apiData.map(obj => {
  const newObj = {...obj}; // 浅拷贝原对象
  Object.keys(newObj).forEach(key => {
    // 判断键是否包含点、空格或%
    if (key.includes('.') || key.includes(' ') || key.includes('%')) {
      delete newObj[key];
    }
  });
  return newObj;
});

console.log(processedData);
// 输出:[{ status: 'ok', NetRange: '192.168.0.0/24' }]

重命名含特殊字符的键

如果想把这些特殊键转换成更规范的命名(比如驼峰式),可以写一个键名转换函数:

// 定义键名转换规则:替换%为Percent,点/空格转驼峰,首字母小写
const transformKey = (key) => {
  let newKey = key.replace('%', 'Percent');
  // 匹配点/空格后的第一个字符,转大写
  newKey = newKey.replace(/[\.\s]+(\w)/g, (_, char) => char.toUpperCase());
  // 首字母小写(可选,根据你的命名习惯调整)
  newKey = newKey.charAt(0).toLowerCase() + newKey.slice(1);
  return newKey;
};

const processedData = apiData.map(obj => {
  return Object.fromEntries(
    Object.entries(obj).map(([key, value]) => {
      // 对特殊键进行转换,普通键保留原样
      if (key.includes('.') || key.includes(' ') || key.includes('%')) {
        return [transformKey(key), value];
      }
      return [key, value];
    })
  );
});

console.log(processedData);
// 输出示例:
// [{ status: 'ok', netRange: '192.168.0.0/24', referralServer: 'ns.example.com', orgAbuseHandle: 'ABUSE123', usagePercent: '90' }]

Python 实现

删除含特殊字符的键

Python里可以通过遍历字典键值对,过滤掉不符合要求的键:

# 示例API返回的数组数据
api_data = [
    {
        'status': 'ok',
        'NetRange': '192.168.0.0/24',
        'Referral.Server': 'ns.example.com',
        'Org Abuse.Handle': 'ABUSE123',
        'Usage%': '90'
    }
]

processed_data = []
for obj in api_data:
    new_obj = {}
    for key, value in obj.items():
        # 只保留不含点、空格、%的键
        if not ('.' in key or ' ' in key or '%' in key):
            new_obj[key] = value
    processed_data.append(new_obj)

print(processed_data)
# 输出:[{'status': 'ok', 'NetRange': '192.168.0.0/24'}]

重命名含特殊字符的键

Python常用蛇形命名,所以可以把特殊字符转换成下划线:

# 定义键名转换规则:替换%为Percent,点/空格转下划线,统一小写
def transform_key(key):
    new_key = key.replace('%', 'Percent')
    new_key = new_key.replace('.', '_').replace(' ', '_')
    new_key = new_key.lower()
    return new_key

processed_data = []
for obj in api_data:
    new_obj = {}
    for key, value in obj.items():
        if '.' in key or ' ' in key or '%' in key:
            new_key = transform_key(key)
            new_obj[new_key] = value
        else:
            new_obj[key] = value
    processed_data.append(new_obj)

print(processed_data)
# 输出示例:
# [{'status': 'ok', 'netrange': '192.168.0.0/24', 'referral_server': 'ns.example.com', 'org_abuse_handle': 'ABUSE123', 'usagepercent': '90'}]

通用注意事项

  • 尽量不要直接修改原API返回的数据,先做拷贝再处理,避免后续使用原数据时出现意外问题
  • 如果你的特殊键规则更复杂(比如包含其他特殊字符),可以用正则表达式扩展判断条件,比如JavaScript里用/[^a-zA-Z0-9_]/匹配所有非字母数字下划线的字符
  • 重命名时要注意避免键名冲突,比如转换后的新键和原有的键重复,这时候可能需要额外处理(比如加后缀或者提前检查)

内容的提问来源于stack exchange,提问作者Ammar Ali

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.26 11:12:51