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