2017-11-19 11 views
0

fs.readFileSync(fileName、 'utf8');を使用してJSONファイルを読み込んでいます。結果に改行文字が含まれ、出力は次のようになります。NodeJS JSONファイル改行文字なしで読み取る

"{\r\n \"name\":\"Arka\",\r\n \"id\": \"13\"\r\n}" 

これらの文字を避けるにはどうすればよいですか?私のローカルファイルがどのように見える

{ 
    "name":"Arka", 
    "id": "13" 
} 
+1

ファイルから削除してください。➜\\ _(ツ))/¯ –

+0

これは解決策ではありません。私はnodejsから変更する必要があります –

+0

冗談です。以下の回答を追加;-) –

答えて

2

fs.readFileSync()を使用してJSONを読み取る必要がありません。これには、fs.readFileSync()の使用方法の周りにtry/catchブロックを書き込んでから、ファイルデータにJSON.parse()を使用する必要があります。代わりにJSONファイルをパッケージのようにNode内に要求することができます。ファイルを文字列として読み込んでからJSON.parse()を使用した場合と同様に解析されます。これにより、JSONを1行に読みやすくなります。

let data = require(fileName) 
console.log(data) // { name: 'Arka', id: '13' } 

新しい行せずにファイルにdata内&キャリッジリターン文字を解析されたJSオブジェクトをシリアル化したい場合にのみdataに渡しJSON.stringify()を使用してファイルにJSON文字列を書き込むことができます。

const {promisify} = require('util') 
const writeFile = util.promisify(require('fs').writeFile) 
const data = require(fileName) 

const serializeJSON = (dest, toJson) => writeFile(dest, JSON.stringify(toJson)) 

serializeJSON('./stringify-data.json', data) 
    .then(() => console.log('JSON written Successfully')) 
    .catch(err => console.log('Could not write JSON', err)) 
0

あなたはファイルを読み込み、その後、正規表現でそれらを削除することができます:

var rawJson = fs.readFileSync(fileName, 'utf8'); 
rawJson = rawJson.replace(/\r|\n/g, ''); 

はあなたドン、JSON.parseでJSONを解析するためのものかかわらず、覚えておいてくださいこれを行う必要はありません。結果は、改行の有無にかかわらず同じになります。

関連する問題