JSON .stringify неправильно конвертирует объект - PullRequest
0 голосов
/ 06 августа 2020

Итак, я столкнулся с действительно странным поведением, которое я не могу исправить или найти кого-то с той же проблемой. Я работаю над системой плагинов для своего приложения, загружая объект js из файлов во время запуска. Я загружаю их с помощью eval, и у меня есть функции, и все работает. Однако, когда я пытаюсь записать свой объект JSON в «файл сохранения», он записывается, но по какой-то причине добавляется дополнительная скобка

Settings. json

{}  "timesToRun": 5,
    "stringForEnd": "We have finished!"
}

Plugin. js

{
  name: 'My First Plugin',
  author: 'Arcr0s',
  target: 'myData',
  settings:
  {
    timesToRun: 5,
    stringForEnd: 'We have finished!'
  },
  settingsPath: './MyPlugin/Settings.json',
  setup: function() {

  },
  job: function() {
    ConnectionHub.requestHttps('xxxxxxxxx', this.callback);
  },
  callback: function(httpsData) {
    currentSocket.write(httpsData);
  }
}

Я пробовал преобразовать атрибут настроек в разные объекты и пары ke / value, но результат всегда один и тот же.

Фрагмент из приложения

let SettingsManager = {
  defaultPath: './Plugins/Settings/',
  loadSettings: function(plugin) {
    var filePath = (plugin.settingsPath != undefined ? plugin.settingsPath : this.defaultPath + plugin.name + ".json");
    console.log(filePath);
    try {
      if (fs.existsSync(filePath)) {
        return fs.readFileSync(filePath,'utf8');
      }
      else {
        this.saveSettings(plugin);
      }
    } catch(err) {
      console.error(err)
    }
  },
  saveSettings: function(plugin) {
    var filePath = (plugin.settingsPath != undefined ? plugin.settingsPath : this.defaultPath + plugin.name + ".json");
    fs.writeFile(this.defaultPath, JSON.stringify(plugin.settings,null, "\t"), function (err) {
      if (err) throw err;
      console.log('Settingsfile for ' + plugin.name + ' was saved successfully.');
    });
  }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...