Как различить текстовый файл и файл json в nodejs - PullRequest
0 голосов
/ 14 октября 2018

Привет, у меня есть ситуация, когда я хочу различать plain text file и json file при чтении файла

, сейчас я не могу различить plain text content и json content

вот что я делаю:

var fs = require('fs');
var path = require('path');

function checkforJson(string){
     return typeof string === 'object';
}


var fileLocation = path.join(__dirname, 'watchfolder/');

fs.readFile(fileLocation, (eventType, filename) => { 
    var filecontent = fs.readFileSync(fileLocation+""+filename);
    filecontent = filecontent.toString();

   if(checkforJson(filecontent)){
       // json file
    }else{
      // plain text file
    }
});

Наиболее приветствуется: Лучший способ решить эту проблему

Вопрос: но вышеописанная проверка по какой-то причине не работает, каков наилучший способ сделать это?

Ответы [ 3 ]

0 голосов
/ 14 октября 2018

Почему бы не использовать блок try-catch с JSON.parse?

function checkforJson(json) {
    try {
        return JSON.parse(json);
    }
    catch (e){
        return null;
    }
}
0 голосов
/ 14 октября 2018

Я думаю, вы могли бы добавить регулярное выражение следующим образом:

var JSONorTXT = function(fileToCheck)
    let isJSON = regex.test(/.*$\.json/)
    if (isJSON === true) {
        var filetype = "json"            
        return filetype
    }
    else {
        var filetype = "txt"
        return filetype
   }

Я не совсем уверен, но это должно сработать.

0 голосов
/ 14 октября 2018

Нет никакой разницы между ними, потому что JSON - это строка, а JSON-файл - это текстовый файл.

Учитывая, что разница между файлом JSON и для остальных текстовых файлов в этом случае равначто он имеет расширение .json, это может быть:

if (/\.json$/i.test(filename)) {
  const data = JSON.parse(filecontent);
} else {
  // plain text file
}

Если файлы должны различаться по содержанию, то на них следует попробовать JSON.parse:

try {
  const data = JSON.parse(filecontent);
} catch (err) {
  // plain text file
}

Во втором случаеневозможно определить, есть ли у JSON или JSON проблемы с форматированием.

...