解組格式不正確的日期時間
當遇到具有格式不正確的日期時間字段的JSON 時,設計一個強大的策略來解析和解組它們變得至關重要進入Go 結構體。不正確的格式通常涉及時區偏移中缺少冒號字元“:”,從而導致解組錯誤。
解決方案:自訂類型和UnmarshalJSON 方法
至要解決此問題,可以定義自訂類型來支援正確和不正確的格式:
<code class="go">type MyTime struct { time.Time } func (self *MyTime) UnmarshalJSON(b []byte) (err error) { s := string(b) s = s[1:len(s)-1] t, err := time.Parse(time.RFC3339Nano, s) if err != nil { t, err = time.Parse("2006-01-02T15:04:05.999999999Z0700", s) } self.Time = t return }</code>
解組時,會呼叫此類型的UnmarshalJSON 方法。它首先從 JSON 字串中刪除周圍的引號。然後,它嘗試使用標準 time.RFC3339Nano 格式解析日期時間。如果失敗,它將繼續嘗試使用不帶冒號字元的不正確格式進行解析(“2006-01-02T15:04:05.999999999Z0700”)。
結構體定義
要在Go 結構中使用此自訂類型:
<code class="go">type Test struct { Time MyTime `json:"time"` }</code>
這確保可以將具有正確和不正確日期時間格式的JSON 解組到同一個Go 結構中。
結論
透過使用適當的 UnmarshalJSON 方法定義自訂時間欄位類型,可以在 Go 程式中無縫解析和解組格式不正確的日期時間欄位。這允許在處理輸入資料時具有更大的靈活性,並確保 Go 結構表示準確地反映數據,無論其格式如何。
以上是如何在 Go 中解組格式不正確的日期時間?的詳細內容。更多資訊請關注PHP中文網其他相關文章!