Javascript 使用JSON.parse重命名JSON字段

Javascript 使用JSON.parse重命名JSON字段,javascript,node.js,json,Javascript,Node.js,Json,假设我们有这个JSON字符串: const v = `{"foo":"bar"}`; 是否有一种方法可以使用JSON.parse配置解析,以便重命名字段,例如将字段名大写: const parsed = JSON.parse(v, captitalize); console.log(parsed); // => {Foo: "bar"} 或者通过某种方式转换字段名称,具体取决于您使用的字段?您可以执行以下操作: // Better use try-catch here const p

假设我们有这个JSON字符串:

const v = `{"foo":"bar"}`;
是否有一种方法可以使用JSON.parse配置解析,以便重命名字段,例如将字段名大写:

const parsed = JSON.parse(v, captitalize);
console.log(parsed);  // => {Foo: "bar"}

或者通过某种方式转换字段名称,具体取决于您使用的字段?

您可以执行以下操作:

// Better use try-catch here
const parsedV = JSON.parse(v);
const parsed = Object.keys(parsedV).reduce((acc, key) => {
    acc[capitalize(key)] = parsedV[key];
    return acc;
}, {});
可以使用“恢复器”参数在对象恢复时修改对象:

const v=`{“foo”:“bar”};
const result=JSON.parse(v,(名称,值)=>{
if(value&&typeof value==“object”&&&!Array.isArray(value)){
//它是一个非null、非数组对象,创建一个替换项,替换项中的键最初为capped
常量newValue={};
for(常量输入值){
newValue[key.charAt(0.toUpperCase()+key.slice(1)]=值[key];
}
返回新值;
}
返回值;
});

控制台日志(结果)解析后为什么不大写?您只大写了键的第一个字母。。。假设您所说的字段是Key。@vibhor1997a在其他语言中使用JSON libs,您可以选择将哪些源字段解析为哪些目标字段,这样就有了更多的控制。大写只是一个例子,但我正在寻找更多的可配置性来将字符串转换为对象。“如果指定了一个恢复程序,则解析计算出的值在返回之前会被转换。”-我猜这就是您所指的,但这只影响值而不影响键,并且您询问的是键。
Object.keys(JSON.parse(v))
而不是
Object.keys(v)
?是的,对不起,我以为
v
是一个对象,我会更新我的评论“不,但是……”事实上,你可以,用一个复活者。@T.J.Crowder哇,我不知道。很高兴知道!我想你的意思是,就像他们收到的一样?哦,也许你是说复活了卢尔茨,请你补充更多关于这个如何工作,以及复活者一般如何工作的内容?通过阅读reviver的MDN文档,我认为不可能太多地更改密钥。感谢您的帮助,除了阵列之外,这非常有效。当值是一个数组时,它应该不加修改地返回。@jmsu-谢谢!我已经修好了。