У меня есть файл .log объектов. Как мне преобразовать их в объект JSON для повторения в Javascript? - PullRequest
0 голосов
/ 17 мая 2018

Вот пример файла .log, который мне нужно конвертировать.Я использую Node.

    {"test": "data", "test1": 123, "foo": "feel me??"}
    {"test": "data", "test1": 123, "foo": "feel me??"}
    {"test": "data", "test1": 123, "foo": "feel me??"}

Я импортирую его с помощью этого кода.

let data = fs.readFileSync(log_path, 'utf8', function(err, data){
  if (err) throw err;
  let tweets = data.split('\n').map(line => JSON.parse(line));

  return tweets;

  fs.close(data, (err) => {
    console.log(err);
  })
})

Как вы можете видеть, он не разделен запятыми, поэтому не в формате JSON.Я пытаюсь прочитать файл, а затем разделить его на новую строку, но это, похоже, не работает.

1 Ответ

0 голосов
/ 17 мая 2018

Предполагая, что "feel me??" подразумевается как свойство, вы можете split увеличить строки, а затем map передать их в массив объектов:

const text = `    {"test": "data", "test1": 123, "foo": "feel me??"}
    {"test": "data", "test1": 123, "foo": "feel me??"}
    {"test": "data", "test1": 123, "foo": "feel me??"}`;
const arrOfObjs = text.split('\n')
  .map(line => JSON.parse(line));
console.log(arrOfObjs);

Другая проблема заключается в том, что readFileSync, как следует из его названия, читает файл синхронно . Это не принимает обратный вызов, как это. Измените код чтения файла на:

let data = fs.readFileSync(log_path, 'utf8');
// do stuff with the `data` string

Помните, что поскольку вы не работаете с потоком, вам не нужно fs.close.

...