2016-11-18 10 views
4

コメント?読むのJSONファイルは、私は、このファイル「file.json」を読むことができますどのように

SyntaxError: Unexpected token # in JSON at position 0 

NPMこの質問を解決するためにいくつかのパッケージを持っている:それは、このエラーを返し

var fs = require('fs'); 
var obj; 
fs.readFile('./file.json', 'utf8', function (err, data) { 
    if (err) throw err; 
    obj = JSON.parse(data); 
}); 

私はこのコードを使用していますか?

答えて

1

で始まるコメントを一致させるためにはかなり簡単に独自のRegExpを使用することができますこの問題の完璧なパッケージは、https://www.npmjs.com/package/hjson

hjsonテキスト入力:

# Comment01 
# Comment02 
{ 
    "name": "MyName" 
} 

使用法:

var Hjson = require('hjson'); 

var obj = Hjson.parse(hjsonText); 
var text2 = Hjson.stringify(obj); 
1

あなたが探しているパッケージは、ストリップ-JSON-コメントと呼ばれている - https://github.com/sindresorhus/strip-json-comments

const json = '{/*rainbows*/"unicorn":"cake"}'; 

JSON.parse(stripJsonComments(json)); //=> {unicorn: 'cake'} 
+0

しかし、このパッケージでは、私は#のように私のカスタムのコメントを定義することができますか? –

+0

そのパッケージが定期的なコメントをどのように扱うのかを見てください。カスタムコメントを扱うためのアイディアを教えてください。 – Kalman

+0

私は問題を提出しました! https://github.com/sindresorhus/strip-json-comments/issues/31作成者にこの解決策をプラグインで修正してください。 –

1

あなたは#

const matchHashComment = new RegExp(/(#.*)/, 'gi'); 
const fs = require('fs'); 

fs.readFile('./file.json', (err, data) => { 
    // replaces all hash comments & trim the resulting string 
    let json = data.toString('utf8').replace(matchHashComment, '').trim(); 
    json = JSON.parse(json); 
    console.log(json); 
}); 
+0

はい、それは動作しますが、私は正規表現を調整しました:/#。ありがとう! –

+1

@HemãVidalは、正規表現を '+'から '*'に変更しました – peteb

関連する問題