हाय नीचे JSON है जिसे मैं CSV फ़ाइल में फ़ील्ड नामों के एक सेट के विरुद्ध मिलान करना चाहता हूं और पॉप्युलेट करना चाहता हूं। मुझे एक एपीआई से जेसन डेटा मिल रहा है और नोड में फ्लाई पर सेट सीएसवी फ़ाइल बनाना चाहता हूं। जेएस

सीएसवी सेट फ़ील्ड नाम:

"Name", "ID", "PRODUCT 1", "PRODUCT 2", "PRODUCT 3"

JSON (सादगी के लिए मैनुअल उदाहरण, संरचना में त्रुटि होने पर क्षमा याचना):

[{
   name: 'Bob',
   id: '100',
   products: {[
       {item: 'product 1',
       qty: '3'},
       {item: 'product 2',
       qty: '2'}]
},{
   name: 'James',
   id: '200',
     products: {[
       {item: 'product 3',
       qty: '1'}]
}

वांछित सीएसवी आबादी:

सीएसवी फ़ील्ड:

"Name", "ID", "PRODUCT 1", "PRODUCT 2", "PRODUCT 3"
 Bob     100    3              2
 James   200                                1

0
Frank Ferdinand McGovern 27 मार्च 2020, 00:10

1 उत्तर

सबसे बढ़िया उत्तर

मैं CSV कॉलम को आकार और समतल करूंगा, फिर json2csv और fs

const { parse } = require('json2csv');
const fs = require('fs');

const items = [
  {
    name: 'Bob',
    id: '100',
    products: [
      {
        item: 'product 1',
        qty: '3'
      },
      {
        item: 'product 2',
        qty: '2'
      }]
  }, {
    name: 'James',
    id: '200',
    products: [
      {
        item: 'product 3',
        qty: '1'
      }]
  }
];
// flatten the needed CSV columns
const flatten = items.map(item => {
  const i = {
    name: item.name,
    id: item.id
  };
  // pull out products
  item.products.forEach(product => {
    i[product.item] = product.qty;
  });

  return i;
});

// Declare the expected fields here
const fields = ['name', 'id', 'product 1', 'product 2', 'product 3'];

const csv = parse(flatten, { fields });

fs.writeFile('items.csv', csv, (err) => {
  if (err) throw err;
  console.log('CSV file saved');
});

आशा है कि मैंने मदद की है।

1
MAS 26 मार्च 2020, 22:03