Как искать определенную позицию в файле JSON?

Я пытаюсь импортировать большой файл JSON, но получаю эту ошибку:

Unexpected token , in JSON at position 197031914

как я могу перейти к этому положению, чтобы исправить это?

Спасибо!

Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
15
0
15 909
5
Перейти к ответу Данный вопрос помечен как решенный

Ответы 5

Просто используйте линтер JSON. В сети их много, например Вот этот. Линтер укажет на конкретные ошибки в синтаксисе вашего файла JSON.

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

tito.300 20.03.2019 21:35

Из любопытства, почему ваши файлы JSON такие большие?

Jimmy Leahy 20.03.2019 21:42

это патентные наборы данных, которые я преобразовал из XML в JSON.

tito.300 20.03.2019 21:46

Похоже, у вас есть однострочный файл. Существует готовая команда для перехода к номеру строки в VS Code. Но нет для перехода к колонке. Итак, просто добавьте это расширение VSCode, чтобы можно было легко перейти к заданному столбцу в строке.

на самом деле это файл JSON, в котором каждый объект в массиве находится на новой строке. Я предполагаю, что когда node импортирует его, он сначала видит его как строку в одну строку, прежде чем анализировать ее. Я знаю это, потому что ошибка возникает внутри блока try, где JSON.parse(content) вызывает содержимое внутри модуля loader.js.

tito.300 20.03.2019 21:41

Я думаю, что node терпит неудачу, когда находит сломанную строку JSON. Как я уже сказал, установите расширение VS Code и проверьте проблемный файл JSON. Вы узнаете сразу. Вы также можете просто взять эту первую строку в файле и вставить ее в онлайн-линтер, например этот: jsonlint.com

JLavoie 20.03.2019 21:56

Вы можете выполнить автоматическое исправление с помощью линтинга из командной строки, используя eslint-плагин-json:

$ npm i eslint eslint-plugin-json
$ npx eslint --fix example.json

ПРИМЕЧАНИЕ. Вы можете получить дополнительную информацию о проблеме с помощью npx eslint example.json (перед устранением).

@JLavoie согласился, но комментарии к другим ответам предполагают, что файл слишком велик для открытия - как вы предлагаете исправить его вручную? Я добавил способ получить больше информации об ошибке. Дайте мне знать, если у вас есть другие предложения по улучшению, спасибо!

JBallin 20.03.2019 23:00

В этом случае откройте файл с помощью vi или vim. vi может открывать очень большие файлы. В vi, предполагая, что ошибка в одной строке 1, введите режим вставки: :call cursor(1, 197031914)

JLavoie 21.03.2019 16:20

Помимо рекомендаций по использованию json-линтера, это расширение позволяет вам перейти к определенному смещению (позиции) в файле. Вы бы хотели пойти на зачет 197031914.

Имейте в виду, что если в файле очень длинные строки, VS Code не будет отображать всю строку. Вы можете попробовать изменить это ограничение следуя этим шагам

Это расширение не работает с большими файлами.

Metomorphose 20.01.2022 18:41
Ответ принят как подходящий

Я знаю, что это старый вопрос, но, поскольку он получил несколько просмотров, я хочу упомянуть, как я решил эту проблему.

Поскольку я обрабатывал огромные файлы (гигабайты), он не работал с линтерами, поэтому я решил эту проблему, написав свой скрипт, который берет читаемый поток и находит эту позицию, а затем возвращает контекст (количество символов x до и после позиция).

Я все еще использую его, и я мог бы опубликовать его на npm, чтобы другие могли использовать его. (не уверен, что кто-то уже делал подобное);

Если у вас есть время, пожалуйста, опубликуйте код. У меня такая же проблема.

phhu 31.07.2020 17:25

Другие вопросы по теме