Изменить ключ в JSON, когда DA SH "-" присутствует в ключе - nodeJS или JavaScript - PullRequest
0 голосов
/ 20 июня 2020

// Резюме: я не знаю, как переименовать ключ, в котором есть da sh. например

obj.Fast-Italian = obj.Fast-Car1;

// Код ниже работает для ключей, которые не содержат da sh "-":

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);

// Я не могу использовать приведенный выше код для this JSON:

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

// Проблема в том, что я не знаю, как это сделать:

obj.Fast-Italian = obj.Fast-Car1;

// из-за da sh "-" в Имя ключа.

    //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 

// Я пробовал это:

var obj = JSON.parse(json)[0];
obj.[Fast-Italian] = obj.['Fast-Car1'];
delete obj._id;

// но потом получил ошибку:

// obj.id = obj. [' Fast-Car1 ']; // SyntaxError: Unexpected token '['

// Дополнительное примечание: // JSON получено из Excel, где в каждом столбце есть Fast- [Something] (на случай, если вам интересно, почему у меня есть JSON ключи with da sh "-")

// спасибо в адва

1 Ответ

2 голосов
/ 20 июня 2020

Вы были на правильном пути с:

var obj = JSON.parse(json)[0];
obj.[Fast-Italian] = obj.['Fast-Car1'];
delete obj._id;

Есть 2 проблемы ...
Во-первых, вы не смешиваете и не сопоставляете точечную нотацию и нотацию скобок. Так что не делайте obj. [Keyname], вы просто делаете obj [keyname].

Два, Fast-Italian не является объявленным именем переменной из того, что я вижу ... это просто должно быть имя строкового ключа ... поэтому вам нужно заключить его в кавычки

var obj = JSON.parse(json)[0];
obj['Fast-Italian'] = obj['Fast-Car1'];
delete obj['Fast-Car1'];
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...