Неожиданная ошибка при анализе JSON-схемы Amazon Alexa Smart Home

#node.js #json #jsonschema #alexa

#node.js #json #jsonschema #alexa

Вопрос:

Я пытаюсь создать несколько интеграционных тестов для серверной части Alexa smart home, используя схему проверки, предоставляемую Amazon, но когда я пытаюсь проанализировать ее с помощью JSON.parse , я получаю сообщение об ошибке:

 > JSON.parse(fs.readFileSync('alexa_smart_home_message_schema.json', 'utf-8'))
Uncaught SyntaxError: Unexpected token } in JSON at position 262146
 

Это меня удивляет, так как файл выглядит нормально, и при его использовании не сообщается об ошибках https://www.jsonschemavalidator.net / так что это, безусловно, действительный JSON, так что я действительно не уверен, что здесь происходит не так. Есть ли какие-то проблемы с использованием JSON.parse больших файлов или что-то в этом роде? Файл невелик, около 635 КБ.

Node.js версия 12.20.1

Комментарии:

1. Это может означать, что у вас есть синтаксическая ошибка в вашем файле JSON. Вы пробовали открывать ее в языковом редакторе, таком как VSCode? Если языковой режим установлен на JSON (который должен быть автоматическим при открытии файла JSON), то он должен выделять любые ошибки.

2. Средство проверки схемы JSON может не обнаруживать ошибки, связанные с синтаксическим анализом. Если вы попробуете использовать обычный редактор и все равно у вас возникнет проблема, пожалуйста, вставьте свой JSON в gist или что-нибудь еще, чтобы поделиться здесь, или, если это не долго, включите это в свой вопрос.

3. Ах, хорошо, я предположил, что валидатор обнаружит любые синтаксические ошибки, и я делал что-то не так с чтением — оказывается, это действительно была синтаксическая ошибка в схеме Amazon! Большое спасибо 🙂

4. Это висячая запятая. Не допускается в JSON. Я комментирую вашу проблему с github.

5. Не стесняйтесь подключаться к серверу slack схемы JSON, если у вас есть вопросы, которые не подходят для StackOverflow =]

Ответ №1:

Оказывается, мое предположение о том, что JSON от Amazon был действительным, было неверным, в схеме есть синтаксическая ошибка.