dig*_*123 0 json struct go unmarshalling
我有一个 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",
...
...
...
}
Run Code Online (Sandbox Code Playgroud)
我正在将此 JSON 数据解组到 GO 结构中,并将数据保存在 Excel 工作表中。一切都按预期工作,唯一的问题是我在 GO 结构中将日期字段定义为字符串数据类型,如下所示:
Resolved string `json:"resolutiondate,omitempty"`
Created string `json:"created,omitempty"`
Run Code Online (Sandbox Code Playgroud)
因此,保存在 Excel 文件中的最终数据如下所示:
但我想将它们保存为 Excel 工作表中的日期数据类型,采用用户定义的格式 -mm/dd/yyyy。如何有效地使用timeGolang的包来实现这一点?请帮忙。
注意:我将无法分享我的完整代码和完整的 JSON 文件。
Men*_*nyT 10
要从自定义格式解组,您需要创建time.Time包装器并实现json.Unmarshaler接口。
type 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
}
Run Code Online (Sandbox Code Playgroud)
现在将您的时间字段指定为CustomTime
Resolved CustomTime `json:"resolutiondate,omitempty"`
Created CustomTime `json:"created,omitempty"`
Run Code Online (Sandbox Code Playgroud)
为了写入 Excel,您需要提供有关您的实施的更多信息。
但示例解决方案:
type 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
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
9426 次 |
| 最近记录: |