1
我在写一个解析JSON对象的函数。我想发出结构化错误消息,指出哪些特定字段中有错误。从自定义json Umarshaller返回的错误缺少上下文
最初我检查错误类型是否为*json.UnmarshalTypeError
,然后从其Field
属性中检索到json标记名称。不幸的是,如果解构JSON的结构具有自定义类型来实现它们自己的UnmarshalJSON
函数,那么这会失败。他们返回的错误是我的自定义错误,并且无法确定它们来自哪个结构的字段。
游乐场对比内置在VS中的自定义错误:https://play.golang.org/p/auH3PE7j5H
在这一点上,我正在考虑换用反射,解组对象变成地图json.RawMessage
开始,然后在同一时间,使解编一个我场可以识别有问题的字段。有没有更简单的方法?这将需要我基本上复制内部json软件包逻辑来分析json标签以找出将每个原始消息解组到哪个字段。
为什么不返回'* json.UnmarshalTypeError'? – JimB
@JimB工作,谢谢!如果可以的话,我会接受这个答案。 这是一个更新的例子:https://play.golang.org/p/SXCHEkEp0Z – abc