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

如何在TypeScript中将嵌套对象数组的所有键转为驼峰式?

解决TypeScript对象数组全层级键转camelCase的问题

你当前的代码问题出在第二步:newObjDetailsOptions只处理了details字段的键,并且直接把整个对象替换成了转换后的details内容,自然就丢了name、contact这些其他字段,而且嵌套的Contact对象也没被处理。要解决这个问题,需要写一个递归处理所有层级的方法,把嵌套对象里的键也一并转换。

解决方案

首先实现一个递归转换函数,能处理对象、数组的嵌套结构:

import _ from 'lodash';

function convertToCamelCase(obj: any): any {
  // 处理数组:遍历每个元素递归转换
  if (Array.isArray(obj)) {
    return obj.map(item => convertToCamelCase(item));
  }
  // 处理对象:遍历键值对,转换键名并递归处理值
  if (obj && typeof obj === 'object') {
    return Object.fromEntries(
      Object.entries(obj).map(([key, value]) => [
        _.camelCase(key),
        convertToCamelCase(value)
      ])
    );
  }
  // 非对象/数组类型直接返回原值
  return obj;
}

然后用这个函数处理你的原数据即可:

const originalData = [
  {
    "Name":"Custom property",
    "Details":{
      "Address":"Huston",
      "Price":"1000000",
    },
    "Contact":{
      "Global":"3432432",
      "Local":"432423423"
    },
  },
  {
    "Name":"Myproperty",
    "Details":{
      "Address":"Huston",
      "Price":"10000001",
    },
    "Contact":{
      "Global":"34324323",
      "Local":"4324234233"
    },
  },
];

const camelCaseData = convertToCamelCase(originalData);

转换后,所有层级的键都会变成camelCase格式:外层Name→name、Details→details、Contact→contact;内层Address→address、Price→price、Global→global、Local→local,且所有字段都会完整保留。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.20 14:01:13