Json от объекта к объекту

#javascript #object

Вопрос:

У меня есть следующий объект JSON, и я хотел бы преобразовать его в объект Javascript.

 let data = [{"agreg": "Count", "colunm": "var_pj", "label": "Type 1"}, 
            {"agreg": "First", "colunm": "qtd_if", "label": "Type 2"}, 
            {"agreg": "Sum", "colunm": "qtd_ag_if","label": "Type 3"}];
 

Я хотел бы поместить некоторые ключи/значения в объект Javascript, подобный этому:

 let disVars = {'var_pj'  : 'Count([',
              'qtd_if'   : 'First([',
              'qtd_ag_if': 'Sum([' };
 

Я попытался использовать следующий код:

 let disVars = data.map(function(item){
    let col = item.colunm.toString();
    let agr = item.agreg.toString();
    return col   ': '   agr   '([';
    });
 

Но результат для console.log(disVars) таков:

  "var_pj: Count([",
 "qtd_if : First([",
 "qtd_ag_if: Sum(["
 

Комментарии:

1. Ты сначала погуглил? JSON.parse

2. это потому, что вы смешали строку с объектом. Объект является javascript, и вы возвращаете/создаете только строку

3. Нет такого понятия, как «Объект JSON».

4. Спасибо вам, ребята. Решение, приведенное ниже, сделало свое дело!

Ответ №1:

Вот рабочее решение вашей проблемы. Я использовал Object.fromEntries функцию для преобразования массива ключ-значение в объект JS.

 let data = [{"agreg": "Count", "colunm": "var_pj", "label": "Type 1"}, 
            {"agreg": "First", "colunm": "qtd_if", "label": "Type 2"}, 
            {"agreg": "Sum", "colunm": "qtd_ag_if","label": "Type 3"}];

let result = Object.fromEntries(data.map(item => [
  item.colunm, item.agreg   '(['
]));

console.log(result); 

Если вам нужны максимальные возможности браузера, вы также можете использовать приведенный ниже код. Код не использует Object.fromEntries API. Вместо этого я создал пустой объект и зациклил данные, а затем добавил к объекту новые свойства.

 let data = [{"agreg": "Count", "colunm": "var_pj", "label": "Type 1"}, 
            {"agreg": "First", "colunm": "qtd_if", "label": "Type 2"}, 
            {"agreg": "Sum", "colunm": "qtd_ag_if","label": "Type 3"}];

let result = new Object();
for (var item of data) {
  result[item.colunm] = item.agreg   '([';
}

console.log(result);