验证JSON并显示错误位置

我想在Go中解析和验证(自定义)
JSON配置文件.我希望能够将文件解析为结构并验证:

> JSON文件中没有意外的密钥(特别是检测拼写错误)
>某些键存在且具有非空值

如果验证失败(或者在语法错误的情况下),我想向用户打印一条错误消息,该消息尽可能详细地解释错误发生在文件中的位置(例如,如果可能,通过说明行号).

内置于Go中的JSON解析器似乎只是默默地忽略意外的键.我还尝试使用jsonpb(Protobuf)反序列化JSON,如果出现意外键,它会返回错误,但不报告位置.

要检查非空值,我可以使用现有的验证库,但我没有看到任何报告详细的错误消息.或者,我可以编写自定义代码来验证内置JSON解析器返回的数据,但是如果有通用方法则会很好.

是否有一种简单的方法来获得理想的行为?

最佳答案 你看过
JSON schema吗?

JSON Schema describes your JSON data format.

我相信它处于草案阶段,但很多语言都有验证库.这是一个Go实现:

> https://github.com/xeipuuv/gojsonschema

点赞