Javascript:将返回的JSON对象属性转换为PascalCase

Javascript:将返回的JSON对象属性转换为PascalCase,javascript,json,angular,typescript,lodash,Javascript,Json,Angular,Typescript,Lodash,我有一个JSON对象。我想将数组转换为PascalCase生成以下内容: contacts: [{ givenName: "Matt", familyName: "Berry" }] Contacts: [{ GivenName: "Matt", FamilyName: "Berry" }] 下面的答案不起作用 Lodash是否具有Pascal case函数?它没有在运行时找到它 _.mapKeys(obj, (

我有一个JSON对象。我想将数组转换为PascalCase生成以下内容:

contacts: [{ givenName: "Matt", familyName: "Berry" }]

Contacts: [{ GivenName: "Matt", FamilyName: "Berry" }]
下面的答案不起作用

Lodash是否具有Pascal case函数?它没有在运行时找到它

_.mapKeys(obj, (v, k) => _.camelCase(k))
当前正在使用Typescript Angular 10库


查看对象数组的所有成员时,

PascalCase似乎与camelCase几乎相同,唯一的区别是第一个字母在PascalCase中大写。因此,您应该能够使用lodash中的camelCase函数,然后使用另一个函数将camelCase单词的第一个字母大写,例如:

const capitalize = (str) => {
  return str.charAt(0).toUpperCase() + str.slice(1)
}
_.mapKeys(obj, (v, k) => capitalize(_.camelCase(k)))
所以整个解决方案可能是这样的:

const capitalize = (str) => {
  return str.charAt(0).toUpperCase() + str.slice(1)
}
_.mapKeys(obj, (v, k) => capitalize(_.camelCase(k)))

你可以这样做

从“lodash”导入{camelCase,startCase}; startCasecamelCasegivenName.replace//g,;//普罗库德·吉文纳姆会吗 检查所有其他场景

如果要转换对象的所有属性,可以使用此选项

const pascalizeKeys=obj=>{ if Array.isArrayobj{ 返回obj.mapv=>pascalizeKeysv; }否则,如果obj!==null&&obj.constructor==Object{ 返回Object.keysobj.reduce 结果,键=>{ 后果 [toPascalCasekey]:pascalizeKeysobj[key], }, {}, ; } 返回obj; }; const toPascalCase=str=>startcasecamelcastr.replace//g, 代码取自此代码,并进一步修改以实现pascalization


这是一个,您可以进一步检查。

这是否涉及类jsonobject的所有成员?您需要使用mapkeys函数或链接的其他stackoverflow问题中的一个答案。我在我的答案中编辑了一个可能的解决方案,并没有测试它,我只是给出了分数并接受了答案,请随意回答问题,谢谢谢谢,最后一件事,我如何让函数在对象数组上工作?其获取错误位于[0]