我正在从包含csv的URL中抓取数据。我抓取的数据的格式是这样的:
我在Node.js中使用nodejs-requestify package:https://www.npmjs.com/package/requestify来做这件事
当我操控response.getBody()时,它的格式与提供的截图完全相同。
我正在尝试将其转换为可以在循环中迭代的JSON array,以便将值插入到数据库中,但是,我正在努力将数据转换为JSON格式。
我尝试过以多种方式拆分数组(comma, single quote, double quote)。我已经尝试过JSON.parse()和JSON.stringify() (两者结合使用)。
这是我正在使用的代码。最终,当我在循环中console.log行时,它应该是JSON格式的,但是,它仍然是逗号分隔值。
requestify.get('URL').then(function(response) {
// Get the response body
var dataBody = response.getBody();
var lineArray = dataBody.split('\r\n');
var data = JSON.parse(JSON.stringify(lineArray));
for(var s = 0; s < data.length; s++) {
var rows = data[s];
console.log(rows)
}
});发布于 2019-05-25 04:38:42
我使用csvtojson和aws-dsk解决了这个问题,因为我的csv托管在S3上。
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();
}发布于 2019-05-25 00:10:48
我想这是一个基本的误会
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);
});https://stackoverflow.com/questions/56295963
复制相似问题