如何在 GO 结构中处理 JSON 中的日期字段

我有一个JSON内容,其中包含一些日期字段,如“解析日期”和“创建”和“更新”,如下所示


{

   "expand":"names,schema",

   "startAt":0,

   "maxResults":50,

   "total":1,

   "issues":[

      {

         "expand":"operations,versionedRepresentations,editmeta,changelog,renderedFields",

         "id":"id",

         "self":"https://url1",

         "key":"key1",

         "fields":{

            "summary":"Summary-1",

            "customfield_10406":null,

            "resolutiondate":"2021-06-10T10:07:35.000+0000",

            "created":"2021-06-10T10:05:24.000+0000",

            "description":"Description-1",

            ...

            ...

            ...

}

我正在将此JSON数据解组到GO结构中,并将数据保存在Excel工作表中。一切都按预期工作,唯一的问题是我在GO结构中将日期字段定义为字符串数据类型,如下所示:


        Resolved           string `json:"resolutiondate,omitempty"`

        Created            string `json:"created,omitempty"`

因此,保存在excel文件中的最终数据如下所示:

http://img1.mukewang.com/633c1b6d0001e17208100049.jpg

但我想将它们保存为excel工作表中的日期数据类型,以用户定义的格式 - mm / dd / yyyy。我怎样才能有效地使用Golang的软件包来实现这一点?请帮忙。time

注意:我将无法共享完整的代码和完整的 JSON 文件。


九州编程
浏览 225回答 2
2回答

翻翻过去那场雪

要从自定义格式取消封接,您需要创建包装器并实现接口。time.Timejson.Unmarshalertype CustomTime struct {    time.Time}func (t *CustomTime) UnmarshalJSON(b []byte) (err error) {    date, err := time.Parse(`"2006-01-02T15:04:05.000-0700"`, string(b))    if err != nil {        return err    }    t.Time = date    return}现在,将您的时间字段指定为CustomTimeResolved           CustomTime `json:"resolutiondate,omitempty"`Created            CustomTime `json:"created,omitempty"`要写入 Excel,您需要提供有关实现的更多信息。但示例解决方案:func (t *CustomTime) ExcelDate() string {    return t.Format("01/02/2006")}

至尊宝的传说

您可以做的是,将字符串包装为您自己的自定义类型,并使其实现接口:Unmarshalertype Unmarshaler interface {    UnmarshalJSON([]byte) error}然后花点时间使用JSON并将其解析为并使用您的自定义布局进行格式化。time.Timemm/dd/yyyytype Date stringfunc (d *Date) UnmarshalJSON(bytes []byte) error {    dd, err := time.Parse(`"2006-01-02T15:04:05.000+0000"`, string(bytes))    if err != nil{        return err    }    *d = Date(dd.Format("01/02/2006"))    return nil}现在您可以使用Created            Date `json:"created,omitempty"`在你的围棋结构和解封。在此处运行示例代码
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Go