javascript - 如何将包含json对象的文件格式化为json数组
问题描述
我有一个包含多个对象的 json 文件,我想将它们转换为 JSON 数组如何执行此 javascript。我的总体目标是从中生成一个 CSV 文件。
这是示例文件内容,
{
Name:"nom1",
Cities:['city1','city2']
}
{
Name:"nom2",
Cities:['city4','city5']
}
注意上面是数据转储它的格式还不是正确的,我想把它转换成下面的格式
var data = [ { Name:"nom1", Cities:['city1','city2'] }, { Name:"nom2", Cities:['city3','city4'] } ]};
然后将其传递给下面的脚本。
我在一个文件中有数千个这样的对象。我想生成CSV数据如下
|名称|城市|
|nom1|城市1 |
|nom1|城市2 |
|nom2|城市3 |
|nom2|city4 |
我正在使用节点 javascript 来实现这一点,
const { Parser, transforms: { unwind } } = require('json2csv');
const data = {
Name:"nom1",
Cities:['city1','city2']
}
const fields = ['Name'];
const transforms = [unwind({ paths: ['features'] })];
const json2csvParser = new Parser({ fields, transforms });
const csv = json2csvParser.parse(myCars);
console.log(csv);
解决方案
这将完全像您提供的文件一样使用文件:
log-parser.js
const fs = require('fs')
async function fileToArray (file) {
const fileContent = await fs.promises.readFile(file)
const singleLined = fileContent
.toString()
.replace(/\n/g, '')
.replace(/\}\{/g, '},{')
.replace(/(\w+):/g, '"$1":')
.replace(/'/g, '"')
console.log(singleLined)
const array = JSON.parse(`[${singleLined}]`)
console.log(array)
}
fileToArray(process.argv[2])
node log-parser.js my-log-file.log
推荐阅读
- swift - 如何在 Firestore (SWIFT) 中使用 FieldValue 减少值?
- python - JQuery .append() 到单个 forloop Python Django 中的多个位置
- c# - 如何使用 linq 在 C# 中管理库存水平
- javascript - 为什么等待和异步有效的变量名?
- sql - ALTER TABLE DROP INDEX 在未优化内存的表上失败
- solr - 在 Solr 中将一些文档从一个集合移动到另一个集合
- django - 如何公开 docker 容器以访问主机数据库?
- python - 有没有办法将多维数组保存为位类型?
- python - 如果它包含列表中的单词,则替换 Pandas 系列中部分字符串的最快方法
- r - 查找 data.table 中的列表是否包含其他列中的单词