2016-11-18 4 views
4

Wie kann ich diese Datei ‚file.json‘ lesen:lesen JSON-Datei ignoriert benutzerdefinierte Kommentare

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

und rufen Sie die json ohne Kommentare?

Ich verwende diesen Code:

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

es diesen Fehler zurückgibt:

SyntaxError: Unexpected token # in JSON at position 0 

Haben npm einige Paket, diese Frage zu lösen?

Antwort

1

Die perfektes Paket für dieses Problem ist https://www.npmjs.com/package/hjson

hjsonText Eingabe:

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

Verbrauch:

var Hjson = require('hjson'); 

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

Das Paket Sie suchen, heißt streifen json-Kommentare - https://github.com/sindresorhus/strip-json-comments

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

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

Aber in diesem Paket kann ich meinen benutzerdefinierten Kommentar als # definieren? –

+0

Schauen Sie sich an, wie das Paket reguläre Kommentare behandelt, und es sollte Ihnen eine Idee geben, wie Sie mit benutzerdefinierten Kommentaren umgehen können. – Kalman

+0

Ich habe ein Problem gemeldet! https://github.com/sindresorhus/strip-json-comments/issues/31 zum Ersteller diese Lösung im Plugin zu beheben. –

1

Sie können Ihre eigenen RegExp ziemlich leicht die Kommentare mit einem #

beginnen entsprechen verwenden
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

Ja, es funktioniert, aber ich habe die Regex angepasst: /#.*/ weil, wenn nur eine # es nicht funktioniert. Vielen Dank! –

+1

@ HemãVidal hat die Regex von '+' nach '*' aktualisiert – peteb

Verwandte Themen