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

NodeJS中如何将API返回JSON的大写首字母键转为小驼峰?

解决NodeJS中API返回JSON键转小驼峰的问题

嘿,这个需求太常见了,完全不用手动挨个修改每个键!有两种靠谱的方案供你选择:用成熟的npm库快速搞定,或者自己写个轻量的工具函数,我都给你详细说说:

一、使用现成的npm库(推荐)

这类库已经帮你处理了所有 edge case(比如嵌套对象、数组、null/undefined值等),省心又高效。

1. camelcase-keys(专门处理对象键名转换)

这是最直接的选择,专门用来把对象的键名转换成小驼峰,支持深度转换嵌套结构和数组。

步骤:

  • 首先安装依赖:
npm install camelcase-keys
  • 然后在代码中使用:
const camelcaseKeys = require('camelcase-keys');

// 模拟API返回的首字母大写格式数据
const apiResponse = {
  AccountNumber: '2342222',
  UserProfile: {
    FullName: 'Jane Smith',
    ContactEmail: 'jane@example.com'
  },
  RecentOrders: [
    { OrderId: '789', OrderTime: '2024-05-20' },
    { OrderId: '1011', OrderTime: '2024-05-21' }
  ]
};

// 转换为小驼峰,deep: true 开启深度转换
const camelCaseData = camelcaseKeys(apiResponse, { deep: true });

console.log(camelCaseData);

输出结果会自动把所有层级的键都转成小驼峰格式,包括数组里的对象键。

2. Lodash(通用工具库)

如果你项目里已经在用Lodash,也可以用它的camelCase方法结合递归处理:

const _ = require('lodash');

function convertToCamelCase(obj) {
  if (_.isArray(obj)) {
    return obj.map(item => convertToCamelCase(item));
  } else if (_.isObject(obj)) {
    return _.transform(obj, (result, value, key) => {
      result[_.camelCase(key)] = convertToCamelCase(value);
    });
  }
  return obj;
}

// 使用方式和上面一致
const camelCaseData = convertToCamelCase(apiResponse);

二、手动实现(无依赖场景)

如果不想额外加依赖,自己写个递归函数也很简单,核心是遍历对象/数组的每个键,转换格式:

// 单个键名转小驼峰
function toCamelCase(key) {
  // 基础版:仅处理首字母大写的情况(比如AccountNumber → accountNumber)
  return key.charAt(0).toLowerCase() + key.slice(1);
  
  // 进阶版:处理多大写字母的情况(比如HTTPRequest → httpRequest)
  // return key.replace(/^[A-Z]/, match => match.toLowerCase())
  //           .replace(/[A-Z]/g, match => `-${match.toLowerCase()}`)
  //           .replace(/-/g, '');
}

// 递归处理整个对象/数组
function convertKeysToCamelCase(obj) {
  if (Array.isArray(obj)) {
    return obj.map(item => convertKeysToCamelCase(item));
  } else if (obj !== null && typeof obj === 'object') {
    return Object.fromEntries(
      Object.entries(obj).map(([key, value]) => [
        toCamelCase(key),
        convertKeysToCamelCase(value)
      ])
    );
  }
  // 非对象/数组类型直接返回
  return obj;
}

// 使用示例
const camelCaseData = convertKeysToCamelCase(apiResponse);

总结

如果项目允许加依赖,优先用camelcase-keys,它的处理更全面,比如能自动跳过非字符串键、处理Symbol类型等;如果不想加依赖,手动实现的函数也能满足基础需求,记得根据你的实际数据格式选择合适的toCamelCase版本。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.21 04:29:34