2017-04-17 10 views
0

私は、BabyParseを使用してローカルCSVファイルをJSONに変換しています。ここではそれをしない私が書いたjsファイルがあります:生成されたJSONをファイルに書き込む、BabyParse

var Baby = require('babyparse'); 
var fs = require('fs'); 
var file = 'test2.csv'; 
var content = fs.readFileSync(file, { encoding: 'binary' }); 

parsed = Baby.parse(content, {fastMode: false}); 
rows = parsed.data; 
console.log(rows); 

fs.writeFile("blahblahblah.json", rows, function(err) { 
    if(err) { 
     return console.log(err); 
    } 

    console.log("The file was saved!"); 
}); 

console.log(rows)ラインでコンソールに出力JSONが正しい(っぽい)のようです。しかし、ファイルにrowsを書き込むと、すべてのJSON定型文が表示されなくなります。たとえば、ここでは以下のcsvファイルを変換しようとしたとき、私は何を得るのです。

col1,col2,col3 
"val1","val2","val3" 
"val1","val2","val3" 
"val1","val2","val3" 

これは、コンソールに出力する内容である:

[ [ 'col1', 'col2', 'col3' ], 
    [ 'val1', 'val2', 'val3' ], 
    [ 'val1', 'val2', 'val3' ], 
    [ 'val1', 'val2', 'val3' ], 
    [ '' ] ] 

しかし、これは、ファイルに書き込まれますものです:

col1,col2,col3,val1,val2,val3,val1,val2,val3,val1,val2,val3, 

ここで何が起こっているのか分かりますか? JSON固有の構文が取り除かれるのはなぜですか?

答えて

1

jsonを文字列に変換してから保存する必要があります。

rows = JSON.stringify(parsed.data); 
1

これはトリックを行う必要があります!

fs.writeFile("blahblahblah.json", JSON.stringify(Baby.parse(content, {fastMode: false}).data), function(err) { 
     if(err) { 
      return console.log(err); 
     } 

     console.log("The file was saved!"); 
    }); 
関連する問題