我正在从包含URL
的{{1}}抓取数据。我要抓取的数据格式如下:
我正在csv
中并使用nodejs-Node.js
:https://www.npmjs.com/package/requestify
当我操纵requestify package
时,它的格式与提供的屏幕截图完全相同。
我正在尝试将其转换为response.getBody()
,我可以在循环中进行迭代以将值插入数据库,但是,我正努力将数据转换为JSON array
格式。
我尝试过以多种方式拆分数组(JSON
)。我已经尝试过comma, single quote, double quote
和JSON.parse()
(以及两者的结合)。
这是我正在使用的代码。最终,当我在循环中JSON.stringify()
行时,它应该是console.log
格式,但是,它仍然是逗号分隔的值。
JSON
答案 0 :(得分:0)
我认为有一个基本的误解
var lineArray = dataBody.split('\r\n');
lineArray现在包含类似
"a", "b", "c"
但是要做类似的事情
var data = JSON.parse(lineArray);
您需要使用lineArray
{ "a":"1", "b":"2", "c":"3" }
我认为您需要类似的东西
const lineData = lineArray.split(',');
const keys = ["name", "age", "gender"];
const jsonLineData = {};
keys.forEach((key, index) => {
jsonLineData[key] = lineData(index);
});
答案 1 :(得分:0)
由于我的csv托管在S3上,因此我使用csvtojson
和aws-dsk
解决了这个问题。
async function startAWS(db){
//Retrieve AWS IAM credentials for the 'master' user
var awsCredentials;
try{
awsCredentials = await retrievePromise(config.get('aws'));
}
catch (e) {
console.log({error:e},'startAWS error');
}
//Setup the AWS config to access our S3 bucket
AWS.config = new AWS.Config({
accessKeyId : awsCredentials.principal,
secretAccessKey :awsCredentials.credential,
region:'us-east-1'
});
//Call S3 and specify bucket and file name
const S3 = new AWS.S3();
const params = {
Bucket: '***',
Key: '***' //filename
};
//Convert csv file to JSON
async function csvToJSON() {
// get csv file and create stream
const stream = S3.getObject(params).createReadStream();
// convert csv file (stream) to JSON format data
const json = await csv().fromStream(stream);
//connect to DB and continue script
db.getConnection()
.then(async (conn) => {
if(json.length) {
for(var s = 0; s < json.length; s++) {
var rows = json[s];
const insert = await conn.query(
'SQL HERE'
);
}
}
})
};
csvToJSON();
}