1 回答

TA贡献1874条经验 获得超12个赞
您可以Address
实现json.Unmarshaler
接口。
type Address struct {
RegistrationDate int64 `json:"registrationDate"`
Name string `json:"name"`
Address string `json:"address"`
City string `json:"city"`
State string `json:"state"`
Zip string `json:"zip"`
ExpirationDate int64 `json:"expirationDate"`
}
func (a *Address) UnmarshalJSON(data []byte) error {
var discard string
return json.Unmarshal(data, &[]any{
&a.RegistrationDate,
&a.Name,
&a.Address,
&a.City,
&a.State,
&discard,
&a.Zip,
&a.ExpirationDate,
})
}
https://go.dev/play/p/eSaXEQ-onOC
如果您需要日期字段保留字符串,您可以使用“转换器”类型来解组 JSON 数字,然后将结果转换int为string.
type Int64String string
func (s *Int64String) UnmarshalJSON(data []byte) error {
var i64 int64
if err := json.Unmarshal(data, &i64); err != nil {
return err
}
*s = Int64String(strconv.FormatInt(i64, 10))
return nil
}
type Address struct {
RegistrationDate string `json:"registrationDate"`
Name string `json:"name"`
Address string `json:"address"`
City string `json:"city"`
State string `json:"state"`
Zip string `json:"zip"`
ExpirationDate string `json:"expirationDate"`
}
func (a *Address) UnmarshalJSON(data []byte) error {
var discard string
return json.Unmarshal(data, &[]any{
(*Int64String)(&a.RegistrationDate),
&a.Name,
&a.Address,
&a.City,
&a.State,
&discard,
&a.Zip,
(*Int64String)(&a.ExpirationDate),
})
}
https://go.dev/play/p/Z3TBL82g_lY
- 1 回答
- 0 关注
- 130 浏览
添加回答
举报