如何用一个额外的空格替换一个对象的PascalCase键?

时间:2019-02-01 14:12:52

标签: javascript json

我正在使用JSON填充某些字段。我加载的键都是驼峰式的,看起来像下面的样子……

{
  "ThisIsAnother": {},
  "ThisIsAnExample": {}
}

我将它们拉回原位,但是我需要对其进行格式化以使其正确,例如

{
  "This Is Another": {},
  "This Is An Example": {}
}

使用JS是否可行?还是应该以其他方式格式化JSON?

3 个答案:

答案 0 :(得分:5)

您始终可以在对象的所有键的大写字母处进行分割。 不过,我相信用户应该适应并使用正确的json键命名。

let data = {
  "ThisIsAnother": {}
};

Object.keys(data).forEach((key) => {
  let newKey = key.split(/(?=[A-Z])/).join(" ");
  data[newKey] = data[key];
  delete data[key];
});

console.log(data);

答案 1 :(得分:0)

您可以将带有capture group的正则表达式用于[A-Z]replace多余的空格

(注意:这将创建一个新对象。如果您希望对同一对象进行突变,则可以将此正则表达式与已接受的答案一起使用)

let data = {
  "ThisIsAnother": {},
  "ThisIsAnExample": {}
};

const newObj = Object.keys(data).reduce((acc, k) => {
  let newKey = k.replace(/\B([A-Z])/g, " $1");
  acc[newKey] = data[k];
  return acc
},{});

console.log(newObj);

答案 2 :(得分:0)

const json = {
  ThisIsAnExample: {},
  ThisIsAnother: {}
};

const result = Object.entries(json).reduce((all, [key, value]) => {
  all[key.match(/[A-Z][a-z]+/g).join(" ")] = value

  return all;
}, {});

console.log(result);