XML をアンマーシャリングするときに Go で time.Time フィールドの日付解析をカスタマイズする方法

DDD
リリース: 2024-11-07 17:49:02
オリジナル
560 人が閲覧しました

How to Customize Date Parsing for time.Time Fields in Go When Unmarshalling XML?

time.Time フィールドを使用した Go でのカスタム XML 日付解析

Golang は、XML データをカスタム構造体にアンマーシャリングする柔軟性を提供しますが、 XML をアンマーシャリングするときに、time.Time フィールドのカスタム日付形式の指定はサポートされません。これにより、返された日付形式がデフォルトの Go 形式と異なる場合に解析エラーが発生する可能性があります。

CustomUnmarshaler Solution

この制限を克服するには、次のカスタム構造体を作成します。匿名の time.Time フィールドを使用して、独自の UnmarshalXML メソッドを実装します。このメソッドは、カスタム形式を使用して日付文字列を解析し、それに応じて time.Time フィールドを設定します。

type customTime struct {
    time.Time
}

func (c *customTime) UnmarshalXML(d *xml.Decoder, start xml.StartElement) error {
    const shortForm = "20060102" // yyyymmdd date format
    var v string
    d.DecodeElement(&v, &start)
    parse, err := time.Parse(shortForm, v)
    if err != nil {
        return err
    }
    *c = customTime{parse}
    return nil
}
ログイン後にコピー

カスタム構造体の組み込み

トランザクション構造体を次のように更新します。カスタム時間フィールドを含めます:

type Transaction struct {
    //...
    DateEntered     customTime     `xml:"enterdate"`
    //...
}
ログイン後にコピー

XML アンマーシャリングでは、customTime 構造体が使用され、定義された形式に従って日付文字列が解析されます。

追加メモ

XML 要素で日付の属性が使用されている場合は、同じ方法で UnmarshalXMLAttr を実装する必要があります。ガイダンスとして、提供されているコード スニペットの例を参照してください。

以上がXML をアンマーシャリングするときに Go で time.Time フィールドの日付解析をカスタマイズする方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート