Недопустимые символы JSON после обработки файла JSON - PullRequest
1 голос
/ 09 мая 2019

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

Вот как я читаю загруженный JSON:

readFile: function () {
  var reader = new FileReader();
  reader.onload = function(event) {
    this.json = JSON.parse(event.target.result);
  }.bind(this);
  reader.readAsText(this.file);
}

Затем я могу редактировать (или нет) объект json.Затем я могу загрузить его с помощью JSON.stringify(json).

Когда я пытаюсь прочитать или проверить выходной JSON, я получаю ошибки, сигнализирующие о недопустимых символах, например:

  • Invalid characters in string. Control characters must be escaped для некоторыхстрок в моем редакторе.
  • UnicodeDecodeError: ‘utf-8’ codec can’t decode byte 0xac in position X: invalid start byte когда я пытаюсь загрузить его в python with open('output.json') as json_file: data = json.load(json_file)

Использует ли JSON.parse, тогда JSON.stringify изменяет кодировку или структуруJSON?Как можно избежать этого эффекта?

ОБНОВЛЕНИЕ:

Исходный файл может содержать несколько символов, таких как \u2013, \u2014, \u201d, \u00e7, ноэти символы преобразуются в подобные вещи � или невидимые символы в выходном файле JSON, что, я думаю, делает его недействительным.

1 Ответ

2 голосов
/ 09 мая 2019

Попробуйте добавить 'UTF-8' в качестве второго параметра к функции readAsText следующим образом:

   reader.readAsText(this.file,'UTF-8');
...