首页 > 解决方案 > Javascript:将返回的 JSON 对象属性转换为 PascalCase

问题描述

我有一个 JSON 对象。我想将数组转换为 PascalCase:

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

Contacts: [{ GivenName: "Matt", FamilyName: "Berry" }]

以下答案无效

Lodash 有 Pascal 大小写函数吗?它没有在运行时找到它。

_.mapKeys(obj, (v, k) => _.camelCase(k))

当前使用 Typescript Angular 10 库。

将返回的 JSON 对象属性转换为(较低的第一个)camelCase

寻找遍历对象数组的所有成员,

标签: javascriptjsonangulartypescriptlodash

解决方案


你可以这样做;

import {camelCase, startCase} from 'lodash';

startCase(camelCase("givenName")).replace(/ /g, ''); // will procude GivenName

检查此要点以了解所有其他情况。

如果你想转换一个对象的所有属性,你可以使用这个;

const pascalizeKeys = (obj) => {
  if (Array.isArray(obj)) {
    return obj.map(v => pascalizeKeys(v));
  } else if (obj !== null && obj.constructor === Object) {
    return Object.keys(obj).reduce(
      (result, key) => ({
        ...result,
        [toPascalCase(key)]: pascalizeKeys(obj[key]),
      }),
      {},
    );
  }
  return obj;
};

const toPascalCase = (str) => startCase(camelCase(str)).replace(/ /g, '')

取自此答案的代码并进一步修改以进行帕斯卡化。

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


推荐阅读