ホームページ  >  記事  >  バックエンド開発  >  JSON 解析で非標準時間形式を処理するにはどうすればよいですか?

JSON 解析で非標準時間形式を処理するにはどうすればよいですか?

DDD
DDDオリジナル
2024-11-09 05:03:02367ブラウズ

How to Handle Non-Standard Time Formats in JSON Parsing?

JSON での非標準時刻形式の解析

一般的な JSON 解析シナリオでは、時刻値は RFC 3339 形式 ("2006-01-02T15)" に準拠することが期待されます。 :04:05Z07:00")。ただし、非標準の時刻形式を扱う場合、デフォルトの JSON デコーダで問題が発生します。

これを克服するには、非標準の時刻形式を表すカスタム データ型に対してカスタム マーシャル メソッドとアンマーシャル メソッドを実装できます。例:

// Create a type alias for the non-standard time format
type JsonBirthDate time.Time

// Implement UnmarshalJSON to handle conversion from JSON string to time.Time
func (j *JsonBirthDate) UnmarshalJSON(b []byte) error {
    s := strings.Trim(string(b), "\"")
    t, err := time.Parse("2006-01-02", s)
    if err != nil {
        return err
    }
    *j = JsonBirthDate(t)
    return nil
}

// Implement MarshalJSON to handle conversion from time.Time to JSON string
func (j JsonBirthDate) MarshalJSON() ([]byte, error) {
    return json.Marshal(time.Time(j))
}

次に、このカスタム タイプを Person 構造体に組み込みます:

type Person struct {
    Name string `json:"name"`
    BirthDate JsonBirthDate `json:"birth_date"`
}

これらのカスタム メソッドを利用することで、JSON デコーダーは非標準時間を正常に解析できるようになりました。形式:

person := Person{}
decoder := json.NewDecoder(req.Body)
if err := decoder.Decode(&person); err != nil {
    log.Println(err)
}

以上がJSON 解析で非標準時間形式を処理するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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