Как мне создать объект json в виде массива json

#javascript #json

#javascript #json

Вопрос:

У меня есть json, возвращенный как часть моего вызова api, и он выглядит так, как показано ниже.

 {
  'D1': {
    'name': 'Emp1',
    'Age':22
  },
  'D2': {
    'name': 'Emp2',
    'Age':43
  },
};
  

Я хочу преобразовать это в массив. т.е. в формате ниже.

 [
  'D1': {
    'name': 'Emp1',
    'Age':22
  },
  'D2': {
    'name': 'Emp2',
    'Age':43
  },
];
  

Я пытаюсь сделать это, используя приведенный ниже код.

 let obj = {
  'D1': {
    'name': 'Emp1',
    'Age':22
  },
  'D2': {
    'name': 'Emp2',
    'Age':43
  },
};
 
 let wholeArray = Object.keys(obj).map(key => obj[key]);
 
 console.log(wholeArray);  

Но он удаляет внешние ключи JSON.

пожалуйста, дайте мне знать, где я ошибаюсь и как получить ожидаемый результат.

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

1. Массив, которым вы поделились, не является ни допустимым Javascript, ни допустимым JSON.

2. требуемый формат недопустим. вам нужны только значения объектов? `

3. Не существует такого понятия, как «объект JSON»

4. Почему вы хотите выполнить это преобразование? Какие выгоды вы ожидаете от этого? Это похоже на проблему XY . Вы хотите преобразовать объект в массив, но вы хотите, чтобы этот массив вел себя как объект.

5. @ThomasSablik, мне нужно запустить a foorEach для этого вывода. итак, требуется в массиве

Ответ №1:

Вы можете разделить объект на массив только с одной парой ключ / значение.

 let object = { D1: { name: 'Emp1', Age:22 }, D2: { name: 'Emp2', Age:43 } },
    array = Object
        .entries(object)
        .map(pair => Object.fromEntries([pair]));

console.log(array);  
 .as-console-wrapper { max-height: 100% !important; top: 0; }  

Ответ №2:

Это:

 [
  'D1': {
    'name': 'Emp1',
    'Age':22
  },
  'D2': {
    'name': 'Emp2',
    'Age':43
  },
];
  

Просто не существует. У массивов нет ключей, у объектов есть.

Самое большее, что вы могли бы сделать, это:

 [
  {
    'D1': {
      'name': 'Emp1',
      'Age':22
    }
  },{
    'D2': {
      'name': 'Emp2',
      'Age':43
    }
  }
];
  

Массив объектов с одним ключом.

Один вариант кода для этого:

 let obj = {
  'D1': {
    'name': 'Emp1',
    'Age':22
  },
  'D2': {
    'name': 'Emp2',
    'Age':43
  },
};
 
//let wholeArray = Object.keys(obj).map(key => obj[key]);
let wholeArray = Object.keys(obj).map(key => {
  let ret={};
  ret[key]=obj[key];
  return ret;
});
 
console.log(wholeArray);  

Побочное замечание: я вижу много похожих вопросов за последние 2-3 дня, людям нужен «массив JSON» с ключами, и они также аккуратно ставят «пустую» запятую в конце своих массивов. Вы, ребята, пришли с какого-то курса?