首頁 > 後端開發 > Golang > 如何解碼非標準時間格式的 JSON?

如何解碼非標準時間格式的 JSON?

Patricia Arquette
發布: 2024-11-09 08:37:02
原創
710 人瀏覽過

How to Decode JSON with Non-Standard Time Formats?

非標準JSON 時間格式的自訂解組

要將非標準時間格式的JSON 解碼為自訂結構,內建的編組和解組函數提供了靈活性。

考慮以下JSON:

{
    "name": "John",
    "birth_date": "1996-10-07"
}
登入後複製

以及用於保存資料的自訂結構:

type Person struct {
    Name string `json:"name"`
    BirthDate time.Time `json:"birth_date"`
}
登入後複製

使用預設解碼器解碼此JSON 會失敗,因為非- 標準時間格式。若要處理此問題,請實作自訂編組和解組函數:

type JsonBirthDate 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
}

func (j JsonBirthDate) MarshalJSON() ([]byte, error) {
    return json.Marshal(time.Time(j))
}
登入後複製

透過將 JsonBirthDate 新增至 Person 結構並實作這些函數,以下程式碼將正確解碼 JSON:

person := Person{}
decoder := json.NewDecoder(req.Body)
err := decoder.Decode(&person)
if err != nil {
    log.Println(err)
}
// person.BirthDate now contains the parsed time as a time.Time object
登入後複製

以上是如何解碼非標準時間格式的 JSON?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板