Данные JSON в настоящее время выглядят так:

[«ID», «Имя», «Возраст»], [«212», «Давид», «38»]

И я бы хотел, чтобы это выглядело так:

{"ID": "212", "Name": "David", "Age": "38"}

Заранее спасибо за помощь

Я нашел этот код, и он решает большую часть проблемы

var columns = ["ID", "Name", "Age"];
var rows = ["212", "David", "38"];
var result =  rows.reduce(function(result, field, index) {
  result[columns[index]] = field;
  return result;
}, {})

console.log(result);
1
LuisFRN 17 Сен 2021 в 21:52

2 ответа

Лучший ответ

Вы можете сделать это, выполнив следующие действия:

  1. извлекать ключи и значения из массива
  2. заархивируйте их по значению ключевого соответствия
  3. используйте Object.fromEntries для создания объекта "ключ-значение"
let obj = [["ID","Name","Age"],["212","David","38"]]
let [keys, values] = obj;
let zipped = keys.map((key, i)=>[key, values[i]]);
let output = Object.fromEntries(zipped);
console.log(output);
0
Mehdi Taher 17 Сен 2021 в 19:28

Допустим, let jsonVal = [["ID", "Имя", "Возраст"], ["212", "Дэвид", "38"], ["212", "Дэвид", "38"]] 0-й индекс будут ключи, а оставшиеся данные

let newJsonVal = []  ​
 for (let i =1; i< jsonVal.length-1; i++) {
    ​let newObject ={}
     ​jsonVal[i].map((d,j) => { 
       ​newObject[jsonVal[0][j] = d;
      ​})
    newJsonVal.push(newObject)
 }

NewJsonVal будет иметь массив объектов по мере необходимости

0
sojin 17 Сен 2021 в 19:30