Я пытаюсь импортировать большой файл JSON, но получаю эту ошибку:
Unexpected token , in JSON at position 197031914
как я могу перейти к этому положению, чтобы исправить это?
Спасибо!





Просто используйте линтер JSON. В сети их много, например Вот этот. Линтер укажет на конкретные ошибки в синтаксисе вашего файла JSON.
Из любопытства, почему ваши файлы JSON такие большие?
это патентные наборы данных, которые я преобразовал из XML в JSON.
Похоже, у вас есть однострочный файл. Существует готовая команда для перехода к номеру строки в VS Code. Но нет для перехода к колонке. Итак, просто добавьте это расширение VSCode, чтобы можно было легко перейти к заданному столбцу в строке.
на самом деле это файл JSON, в котором каждый объект в массиве находится на новой строке. Я предполагаю, что когда node импортирует его, он сначала видит его как строку в одну строку, прежде чем анализировать ее. Я знаю это, потому что ошибка возникает внутри блока try, где JSON.parse(content) вызывает содержимое внутри модуля loader.js.
Я думаю, что node терпит неудачу, когда находит сломанную строку JSON. Как я уже сказал, установите расширение VS Code и проверьте проблемный файл JSON. Вы узнаете сразу. Вы также можете просто взять эту первую строку в файле и вставить ее в онлайн-линтер, например этот: jsonlint.com
Вы можете выполнить автоматическое исправление с помощью линтинга из командной строки, используя eslint-плагин-json:
$ npm i eslint eslint-plugin-json
$ npx eslint --fix example.json
ПРИМЕЧАНИЕ. Вы можете получить дополнительную информацию о проблеме с помощью npx eslint example.json (перед устранением).
@JLavoie согласился, но комментарии к другим ответам предполагают, что файл слишком велик для открытия - как вы предлагаете исправить его вручную? Я добавил способ получить больше информации об ошибке. Дайте мне знать, если у вас есть другие предложения по улучшению, спасибо!
В этом случае откройте файл с помощью vi или vim. vi может открывать очень большие файлы. В vi, предполагая, что ошибка в одной строке 1, введите режим вставки: :call cursor(1, 197031914)
Помимо рекомендаций по использованию json-линтера, это расширение позволяет вам перейти к определенному смещению (позиции) в файле. Вы бы хотели пойти на зачет 197031914.
Имейте в виду, что если в файле очень длинные строки, VS Code не будет отображать всю строку. Вы можете попробовать изменить это ограничение следуя этим шагам
Это расширение не работает с большими файлами.
Я знаю, что это старый вопрос, но, поскольку он получил несколько просмотров, я хочу упомянуть, как я решил эту проблему.
Поскольку я обрабатывал огромные файлы (гигабайты), он не работал с линтерами, поэтому я решил эту проблему, написав свой скрипт, который берет читаемый поток и находит эту позицию, а затем возвращает контекст (количество символов x до и после позиция).
Я все еще использую его, и я мог бы опубликовать его на npm, чтобы другие могли использовать его. (не уверен, что кто-то уже делал подобное);
Если у вас есть время, пожалуйста, опубликуйте код. У меня такая же проблема.
Я имею дело с файлами размером более 1G. Я даже не могу открыть файл, чтобы скопировать содержимое в линтер