如何在 Go 中将数组的数组解析为结构?

[

[1501545600000,"a","b","c","d","pass this","e",1651363200000],[1504224000000,"a","b","c","d","pass this","e",1654041600000],

...

]

我有一堆这样的数组。它来自外部 API。我想将它映射到一个结构。而且我不需要“传递这个”字段。我怎样才能做到这一点?


这也是我的结构


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"`

}

谢谢你。


宝慕林4294392
浏览 137回答 1
1回答

HUWWW

您可以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 stringfunc (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
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Go