Преобразование JSON в формат CSV с использованием Javascript - PullRequest
1 голос
/ 09 мая 2020

Я пытаюсь преобразовать этот объект Javacript в файл CSV без каких-либо фреймворков только в ванили JS

Ниже приведены мои json:

[{
    customer_details: {
        firstName: "SEBO",
        lastName: "RAQUI",
        address1: "1990 empty road",
        address2: "",
        address3: "",
        zipcode: "99199",
        country: "US",
    },
    order_details: {
        items: [
            {
                listPrice: 14,
                productID: "IEBPTDIEBAIEB119SJM",
                quantity: 11,
                description: "RED SHOES",
            },
            {
                listPrice: 9,
                productID: "PTDIIEB2886JG10",
                quantity: 8,
                description: "WHITE SHIRT",
            },
        ],
    },
    payment: "AMEX",
    shipping: { type: "Express", HSCode: "ARKA10" },
}]

вывод в формате csv

customer_details.firstname,customer_details.lastname,customer_details.address1,customer_details.address2,customer_details.address3,customer_details.zipcode,customer_details.country,order_details.items.listPrice,order_details.items.productID,order_details.items.quantity,order_details.items.description,payment,shipping.type,shipping.HSCode


SEBO,RAQUI,1990 empty road,,,99199,US,14,EBPTDIEBAIEB119SJM,11,RED SHOES,AMEX,Express,ARKA10
,,,,,,,9,PTDIIEB2886JG10,8,WHITE SHIRT,,,

1 Ответ

0 голосов
/ 09 мая 2020

Попробуйте следующее:

const JSONtoCSV = (arr, columns, delimiter = ';') =>
  [
    columns.join(delimiter),
    ...arr.map(obj =>
      columns.reduce(
        (acc, key) => `${acc}${!acc.length ? '' : delimiter}"${!obj[key] ? '' : obj[key]}"`,
        ''
      )
    )
  ].join('\n');

Я изменил разделители, чтобы использовать точки с запятой, как показано в вашем примере.

Ресурс: https://github.com/30-seconds/30-seconds-of-code/blob/master/snippets/JSONtoCSV.md

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...