如何在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
相关产品推荐
相关产品推荐

