1

私は、いくつかのファイルを読み取り、分割された (\n - 新しい行で) 文字列を配列として配置する必要があるプロジェクトに取り組んでいます。これは、ファイルを読み取った結果の出力fs.readFileSync(filepath, 'utf8').split('\n'); が文字列であることを意味し、それを配列に変換する必要がありますが、方法がわからないため問題があります。入力データの例を次に示します。

[[164,17567,160,[]],[166,8675,103,[]],
[[164,17567,160,[]],[166,8675,103,[]],
[[164,17567,160,[]],[166,8675,103,[]],
[[164,17567,160,[]],[166,8675,103,[]]

forループで入れようとしたのですが、どういうわけか文字列から配列に変換できず、出力は次のようになります。

"[[164,17567,160,[]],[166,8675,103,[]]",
"[[164,17567,160,[]],[166,8675,103,[]]",
"[[164,17567,160,[]],[166,8675,103,[]]",
"[[164,17567,160,[]],[166,8675,103,[]]"
4

1 に答える 1

6

改行による分割を続け、改行なしで 1 つの文字列に再結合し、最後に JSON.parse を使用して解析することをお勧めします。

var lines = fs.readFileSync(filepath, 'utf8').split('\n');
var rawData = '';
for (var l in lines){
    var line = lines[l];
    rawdata += line;
}
var data = JSON.parse('[' + rawdata + ']');

でも!(タイプミスでない限り) 各行に余分な開始角括弧があるように見えます。これらは、解析する前に削除する必要があります。制御できる場合は、できればソースデータから削除してください:)

さらに、有効な JSON にするには、上で示したように、全体を "[ ]" で囲む必要があります。

于 2013-03-19T08:04:56.043 に答える