Convertir .xml a JSON

问题描述 投票:0回答:1

我正在加载一个Excel文件,并通过SheetJS库将其转换为JSON,但我通过这种方式收到它:

JSON.parse(输出)

data: Array(15)
0: (11) ["id", "created", "device", "plataforma", "locale", "first_render_time", "total_load_time", "total_size", "load_without_js", "request", "score"]
1: (11) ["424", "2019-11-19T23:58:07.977Z", "mobile", "PSI", "es-CO", "9840", "37602", "6286909", "3978", "227", "0"]
2: (11) ["423", "2019-11-19T23:57:43.340Z", "desktop", "PSI", "es-CO", "1981", "7903", "5424580", "3452", "204", "0.19"]
3: (11) ["422", "2019-11-19T23:55:24.163Z", "mobile", "PSI", "es-CO", "10052", "38450", "5850544", "3506", "231"

第一行必须是JSON name

我想以这种方式接收它。

[
  {
    id: 6049,
    created: "2019-11-29T20:05:22.870Z",
    device: "desktop",
    plataforma: "PSI",
    locale: "es-CO",
    first_render_time: 2042,
    total_load_time: 7904,
    total_size: 6000627,
    load_without_js: 3722,
    request: 212,
    score: "0.18"
  },
  {
    id: 6046,
    created: "2019-11-29T20:00:23.317Z",
    device: "desktop",
    plataforma: "PSI",
    locale: "es-CO",
    first_render_time: 2052,
    total_load_time: 7974,
    total_size: 6001442,
    load_without_js: 3648,
    request: 212,
    score: "0.18"
  }
]
javascript json
1个回答
1
投票

destructuring将数组的标题(第一行)与正文(所有其他行)分开。使用Array.map()迭代主体,然后使用Array.map()将标头复制到对象,并从当前数组中获取数据:


1
投票

您可以这样转换数据

const convertToObjects = ([header, ...body]) =>
  body.map(arr => header.reduce((r, prop, i) => {
    r[prop] = arr[i];
    
    return r;
  }, {}));

const data = [
  ["id", "created", "device", "plataforma", "locale", "first_render_time", "total_load_time", "total_size", "load_without_js", "request", "score"],
  ["424", "2019-11-19T23:58:07.977Z", "mobile", "PSI", "es-CO", "9840", "37602", "6286909", "3978", "227", "0"],
  ["423", "2019-11-19T23:57:43.340Z", "desktop", "PSI", "es-CO", "1981", "7903", "5424580", "3452", "204", "0.19"]
];

const result = convertToObjects(data);

console.log(result);

data.map((a,i)=> Object.fromEntries(data[0].map((x,j)=> [x,data[i][j]])) ).slice(1)
© www.soinside.com 2019 - 2024. All rights reserved.