首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >更改JSON中的键,当DASH "-“出现在Key - nodeJS或JavaScript中时

更改JSON中的键,当DASH "-“出现在Key - nodeJS或JavaScript中时
EN

Stack Overflow用户
提问于 2020-06-19 22:18:26
回答 1查看 94关注 0票数 0

摘要:

我不知道如何重命名其中有破折号的钥匙。例如

代码语言:javascript
复制
obj.Fast-Italian = obj.Fast-Car1;

下面的代码适用于不包含破折号的键"-":

代码语言:javascript
复制
var json = '[{"_id":"5078c3a803ff4197dc81fbfb","email":"user1@gmail.com","image":"some_image_url","name":"Name 1"}]';

var obj = JSON.parse(json)[0];
obj.id = obj._id;
delete obj._id;
 
json = JSON.stringify([obj]);
fs.writeFileSync('output1.json', json);

我不能用上面的这个JSON:

代码语言:javascript
复制
var json = '[{"Fast-Car1":"Ferrari F40 Cabrio","Fast-Car2":"Audi R8 Black Edition","Fast-Car3":"Nissan GTR Blue"},{"Fast-Car1":"Lambo Diablo Fire Colors","Fast-Car2":"Skoda RS 4 doors","Fast-Car3":"Honda NSX red paint"}]'
    // what I need to go here is change Fast-Car1 Fast-Italian, Fast-Car2 = Fast-German, Fast-Car3 = Fast-Japanese

问题是我不知道该怎么做:

代码语言:javascript
复制
obj.Fast-Italian = obj.Fast-Car1;

是因为键名中的"-“。

代码语言:javascript
复制
    //so final JSON would look like this:
    var json = '[{"Fast-Italian":"Ferrari F40 Cabrio"},{"Fast-German":"Audi R8 Black Edition"},{"Fast-Japanese":"Nissan GTR Blue"},,{"Fast-Italian":"Lambo Diablo Fire Colors","Fast-German":"VW Golf RS silver","Fast-Japanese":"Honda NSX red paint"}]'
    // JSON has big amount of those, so I will loop anyway, but I have no idea how to 

我试过这个:

代码语言:javascript
复制
var obj = JSON.parse(json)[0];
obj.[Fast-Italian] = obj.['Fast-Car1'];
delete obj._id;

但后来出错了:

代码语言:javascript
复制
// obj.id = obj.['Fast-Car1'];
// SyntaxError: Unexpected token '['

额外注意: JSON来自Excel,其中每个列都有快速-

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-06-19 22:25:48

你在正确的轨道上:

代码语言:javascript
复制
var obj = JSON.parse(json)[0];
obj.[Fast-Italian] = obj.['Fast-Car1'];
delete obj._id;

有两个问题..。

第一,你不混合和匹配点表示法和括号符号。所以不要做obj.keyname,你只需做objkeyname。

第二,据我所见,快速意大利语不是一个已声明的变量名.它应该是字符串键名..。所以你需要把它用引号括起来

代码语言:javascript
复制
var obj = JSON.parse(json)[0];
obj['Fast-Italian'] = obj['Fast-Car1'];
delete obj['Fast-Car1'];
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/62479309

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档