首页 >后端开发 >Golang >JSON解析中如何处理非标准时间格式?

JSON解析中如何处理非标准时间格式?

DDD
DDD原创
2024-11-09 05:03:02420浏览

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中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn