Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

127
Visualizações
Producir CSV desde un objeto JSON

Tengo un objeto JSON así que estoy tratando de producir un CSV desde

 { "football": { "count": 2109, "emailed": 0, "optin": 2109, }, "tennis": { "count": 61114, "emailed": 11111, "optin": 555, } }

Sin embargo, los títulos de los campos tienen que ser diferentes

Lo que busco es esencialmente algo como esto

 Sport, Total, Emails Sent, No Opt Ins, football, 2109, 0, 2109, tennis, 61114, 11111, 555

Intenté usar paquetes pero parece que no puedo hacerlo funcionar, como tal, luego intenté hacerlo yo mismo

 const fields = ['Sport', 'Total', 'Emails Sent', 'No Opt Ins'];

Envolví mi JSON en una matriz para poder usar el mapa

 try { const replacer = (key, value) => (value === null ? '' : value); const csv = [ fields.join(','), ...dataReduced.map((row) => fields.map((fieldName) => JSON.stringify(row[fieldName], replacer)).join(',')), ].join('\r\n'); console.log(csv); } catch (err) { console.error(err); }

Obviamente, eso no funcionará porque los nombres de los campos no coinciden con los nombres de los objetos. ¿Cómo puedo producir una salida CSV de la forma descrita anteriormente?

Gracias

about 4 years ago · Juan Pablo Isaza
1 Respostas
Responde à pergunta

0

Dado que la fila es un objeto literal, es posible que las claves no estén necesariamente ordenadas, por lo que el map aquí no es suficiente, debería haber un asignador de columnas, algo como esto:

 const row = { "football": { "count": 2109, "emailed": 0, "optin": 2109, }, "tennis": { "count": 61114, "emailed": 11111, "optin": 555, } }; const head = { football: {id: 0, name: 'Sport'}, count: {id: 1, name: 'Total'}, emailed: {id: 2, name: 'Emails Sent'}, optin: {id: 3, name: 'No Opt Ins'} }; const csv = [Object.values(head).sort((a, b) => a.id - b.id) .map(value => value.name).join()]; Object.entries(row).forEach(([key, value]) => { const line = [key]; Object.entries(value).forEach(([key, value]) => { line[head[key].id] = value; }); csv.push(line.join()); }); console.log(csv.join('\n'));

about 4 years ago · Juan Pablo Isaza Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda