一貫性のない日時形式のアンマーシャル
JSON データを扱う場合、タイムゾーン オフセット形式が異なるため、日時形式をアンマーシャルすると不整合が生じる可能性があります。 Go の標準解析メカニズムではタイムゾーン オフセットが 02:00 形式であることが想定されていますが、一部のデータには 0200 などの誤った形式が含まれている可能性があります。
これに対処するために、Go は正しいタイムゾーン形式と間違ったタイムゾーン形式の両方を処理するカスタム アンマーシャリング メソッドを提供します。改訂されたアプローチは次のとおりです。
type MyTime struct { time.Time } func (self *MyTime) UnmarshalJSON(b []byte) (err error) { s := string(b) // Remove quotation marks s = s[1:len(s)-1] // Attempt to parse using RFC3339Nano format t, err := time.Parse(time.RFC3339Nano, s) if err != nil { // If parsing fails, try custom format without ':' t, err = time.Parse("2006-01-02T15:04:05.999999999Z0700", s) } self.Time = t return } type Test struct { Time MyTime `json:"time"` }
このカスタム アンマーシャリング メソッド (UnmarshalJSON) では、
このアプローチにより、正しい形式の日時文字列と正しくない形式の日時文字列の両方が正しく解析されること。
以上がGo で一貫性のない日時形式をアンマーシャリングするにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。