Я хочу анализировать и проверять (настраивать) файлы конфигурации JSON в Go. Я хотел бы быть в состоянии разобрать файл в структуры и подтверждения того, что:Golang: Проверить JSON и показать позицию ошибки
- никаких неожиданных ключи не присутствуют в файле формата JSON (в частности, для обнаружения опечаток)
- некоторые клавиши присутствуют и имеют не- пустые значения
В случае неудачной проверки (или в случае синтаксической ошибки), я хочу напечатать сообщение об ошибке для пользователя, которое объясняет как можно более подробно, где в файле произошла ошибка (например, путем указания номер строки, если это возможно).
Анализатор JSON, встроенный в Go, кажется, просто молча игнорирует неожиданные ключи. Я также попытался использовать jsonpb (Protobuf) для десериализации JSON, который возвращает ошибку в случае неожиданного ключа, но не сообщает о позиции.
Чтобы проверить непустые значения, я мог бы использовать существующую библиотеку проверки, но я не видел, чтобы какие-либо сообщения отображали подробные сообщения об ошибках. В качестве альтернативы я мог бы написать собственный код, который проверяет данные, возвращаемые встроенным парсером JSON, но было бы неплохо, если бы был общий способ.
Есть ли простой способ получить желаемое поведение?
Спасибо. Да, я пробовал реализацию, которую вы связали. К сожалению, он, похоже, не возвращает позицию ошибки в случае сбоя проверки. – stephank
Я сам не пробовал библиотеку. Может быть, место ошибки может быть добавлено к нему? – miku
Я посмотрел немного больше на gojsonschema xeipuuv. Он может печатать информацию об ошибке: 'fmt.Printf (" -% s:% s \ n ", error.Context(). String(), error)'. Отпечатано: '- (root) .0: name: name required' – stephank