2016-09-12 15 views
0

私はテキストファイルを持っています。関数内のファイルを読み込んでJSONオブジェクトとして返す必要があります。次のエラーは、 "予期しないトークンVをJSONの0桁目に"投げています。テキストファイルを読み込んでノードJSでJSONオブジェクトとして返す方法は?

Server.js

fs.readfile('result.txt', 'utf8', function(err,data) { 
    if(err) throw err; 
    obj = JSON.parse(data); 
    console.log(obj); 
}); 

result.txtには、以下の

VO1のようになります。10 5 2

VO2:5 3 2

私は、私が使用することはできませんだと思います直接JSON.parse。どのように進めますか?

+0

result.txtの内容は何ですか? – Roberrrt

+0

result.txtを見てください。 – kenda

+1

'.txt'ファイルが文字列としてインポートされるので、iircはできません。 jsonに変換するデータ用に独自のパーサーを作成する必要があります。 – Roberrrt

答えて

-1

あなたのresult.txtは有効ではありませんjson。

有効なjsonは次のようになります。

{ 
    "VO1": [10, 5, 2], 
    "VO2": [5, 3, 2] 
} 
1

と仮定すると、次の

すべての行が改行文字で区切られ

\n

すべての行がその前に一部がキーである:によって分離されその後ろの部分はキー値を配列として示すはずの(スペース)で区切られた文字列です。以下は

あなたのフォーマットのために働く必要があります。

fs.readfile('result.txt', 'utf8', function(err,data) { 
    if(err) throw err; 
    let obj = {}; 
    let splitted = data.toString().split("\n"); 
    for (let i = 0; i<splitted.length; i++) { 
     let splitLine = splitted[i].split(":"); 
     obj[splitLine[0]] = obj.splittLine[1].split(" "); 
    } 
    console.log(obj); 
}); 
+0

splitLineで不明な識別子としてエラーが発生しました。 – Bharg

+0

したがって、行の中にはキー、値、または ':'がありません。 @Bhargオブジェクトに値を代入する前に、チェックを追加してみてください – baao

0

あなたが自分でテキストファイルを解析する必要があります。 RegExpやその他の手段を使って値を抽出し、その中からオブジェクトを作成してからJSON.stringifyを作成することができます。

0

その答えを提供してくれたBaaoに感謝します。解決策の別の味として

、あなたがいずれかを持っていない場合は「:」あなたはそうのようなキーで常にコードできたファイルのリストについては、おそらく:

var data = fs.readFileSync(pathAndFilename); 
var testData = {}; 
var splitList = data.toString().split('\r\n'); 
for (var i = 0; i < splitList.length; i++) { 
    testData['fileNumber' + i.toString()] = splitList[i]; 
} 
関連する問題