yarn add export-from-jsonor
npm i --save export-from-jsonor
pnpm i --save export-from-jsonexportFromJSON supports CommonJS, EcmaScript Module, UMD importing.
exportFromJSON receives the option as the Types Chapter demonstrated, and it uses a front-end downloader as the default processor. In browser environment, there is a content size limitation on the default processor, consider using the server side solution.
import exportFromJSON from 'export-from-json'
const data = [{ foo: 'foo'}, { bar: 'bar' }]
const fileName = 'download'
const exportType = exportFromJSON.types.csv
exportFromJSON({ data, fileName, exportType })Check the codepen example
<script src="https://unpkg.com/export-from-json/dist/umd/index.min.js"></script>
<script>
const data = [{ foo: 'foo'}, { bar: 'bar' }]
const fileName = 'download'
const exportType = 'csv'
window.exportFromJSON({ data, fileName, exportType })
</script>exportFromJSON returns what the option processor returns, we can use it on server side for providing a converting/downloading service:
const http = require('http')
const exportFromJSON = require('export-from-json')
http.createServer(function (request, response){
// exportFromJSON actually supports passing JSON as the data option. It's very common that reading it from http request directly.
const data = '[{"foo":"foo"},{"bar":"bar"}]'
const fileName = 'download'
const exportType = 'txt'
const result = exportFromJSON({
data,
fileName,
exportType,
processor (content, type, fileName) {
switch (type) {
case 'txt':
response.setHeader('Content-Type', 'text/plain')
break
case 'css':
response.setHeader('Content-Type', 'text/css')
break
case 'html':
response.setHeader('Content-Type', 'text/html')
break
case 'json':
response.setHeader('Content-Type', 'text/plain')
break
case 'csv':
response.setHeader('Content-Type', 'text/csv')
break
case 'xls':
response.setHeader('Content-Type', 'application/vnd.ms-excel')
break
}
response.setHeader('Content-disposition', 'attachment;filename=' + fileName)
return content
}
})
response.write(result)
response.end()
}).listen(8080, '127.0.0.1')Note: JSON refers to a parsable JSON string or a serializable JavaScript object.
- You can reference these exported types through a mounted static field
types, e.g.
exportFromJSON({ data: jsonData, fileName: 'data', exportType: exportFromJSON.types.csv })- You can transform the data before exporting by
beforeTableEncode, e.g.
exportFromJSON({
data: jsonData,
fileName: 'data',
exportType: exportFromJSON.types.csv,
beforeTableEncode: rows => rows.sort((p, c) => p.fieldName.localeCompare(c.fieldName)),
})
