1
0
Fork 0
mirror of synced 2024-09-21 11:53:49 +12:00
budibase/packages/server/src/utilities/csv.ts

21 lines
750 B
TypeScript
Raw Normal View History

2023-05-02 21:34:45 +12:00
import csv from "csvtojson"
export async function jsonFromCsvString(csvString: string) {
2023-05-02 23:46:53 +12:00
const castedWithEmptyValues = await csv({ ignoreEmpty: true }).fromString(
csvString
)
2023-05-02 22:57:18 +12:00
// By default the csvtojson library casts empty values as empty strings. This is causing issues on conversion.
// ignoreEmpty will remove the key completly if empty, so creating this empty object will ensure we return the values with the keys but empty values
2023-05-02 23:46:53 +12:00
const result = await csv({ ignoreEmpty: false }).fromString(csvString)
result.forEach((r, i) => {
2024-03-21 00:46:39 +13:00
for (const [key] of Object.entries(r).filter(([, value]) => value === "")) {
2023-05-02 23:46:53 +12:00
if (castedWithEmptyValues[i][key] === undefined) {
r[key] = null
}
}
})
2023-05-02 22:57:18 +12:00
2023-05-02 21:34:45 +12:00
return result
}