1 回答

TA貢獻1874條經(jīng)驗 獲得超12個贊
您可以Address
實現(xiàn)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
如果您需要日期字段保留字符串,您可以使用“轉(zhuǎn)換器”類型來解組 JSON 數(shù)字,然后將結(jié)果轉(zhuǎn)換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 關(guān)注
- 125 瀏覽
添加回答
舉報