ホームページ  >  記事  >  バックエンド開発  >  Golang でカスタム日付形式を使用して time.Time 型の XML フィールドをアンマーシャリングする方法

Golang でカスタム日付形式を使用して time.Time 型の XML フィールドをアンマーシャリングする方法

Mary-Kate Olsen
Mary-Kate Olsenオリジナル
2024-11-07 22:53:03777ブラウズ

How to Unmarshal XML Fields of Type time.Time with Custom Date Formats in Golang?

Golang で time.Time 型の XML フィールドをアンマーシャルする

Golang で REST API を使用して XML データ取得を操作する場合、デフォルトの time.Time 解析形式に準拠していない日付フィールドが発生することはまれです。この不一致により、取得した日付を GO 構造体の time.Time フィールドに割り当てようとすると、アンマーシャリングが失敗する可能性があります。

残念ながら、アンマーシャル関数に目的の日付形式を明示的に指定する簡単な方法はありません。ただし、目的の形式で日付フィールドを表すカスタム構造体を定義するという回避策が存在します。

これを実現する方法は次のとおりです。

  1. 埋め込む匿名のcustomTime 構造体を作成します。 time.Time 型。
  2. アンマーシャリング プロセスを処理するために、customTime 構造体内に必要な UnmarshalXML メソッドを実装します。
  3. UnmarshalXML 内の日付解析ロジックをカスタマイズして、次のように使用される "yyyymmdd" 日付形式に対応します。 API.
  4. customTime 構造体を使用して、トランザクション構造体の元の time.Time フィールドを置き換えます。

このアプローチを示すコード例は次のとおりです。

type Transaction struct {
    // ... other fields
    DateEntered customTime `xml:"enterdate"` // Use customTime to handle specific date format
}

type customTime struct {
    time.Time
}

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

このアプローチを採用すると、アンマーシャリング プロセス中に日付形式を指定するという制限を克服し、デフォルトの形式に準拠しない日付をシームレスに処理できます。

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

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。