gpt4 book ai didi

go - 如何在Golang中的struct中访问嵌套字段

转载 作者:行者123 更新时间:2023-12-01 22:31:51 26 4
gpt4 key购买 nike

假设我有这个structblock:

type AllShipments struct {
Shipments []struct {
ShipmentID int `json:"shipmentId"`
ShipmentDate time.Time `json:"shipmentDate"`
ShipmentItems []struct {
OrderItemID string `json:"orderItemId"`
OrderID string `json:"orderId"`
} `json:"shipmentItems"`
Transport struct {
TransportID int `json:"transportId"`
} `json:"transport"`
} `json:"shipments"`
}

我用:
func main() {
var t AllShipments
.....
.....
body, err := ioutil.ReadAll(resp.Body)
if err != nil {
log.Fatal(err)
}

err = json.Unmarshal(body, &t)
if err != nil {
fmt.Println(string(body))
}

prettyJSON, err := json.MarshalIndent(t, "", " ")
if err != nil {
log.Fatal("Failed to generate json", err)
}
fmt.Printf("%s\n", string(prettyJSON))

例如,如何仅获取json字段“shipmentDate”,我尝试了 t.Shipments.ShipmentDate,但没有成功。 t.Shipments确实可以过滤掉第一个数组。那么最好的方法是什么?我知道我可以使用 "json:-"禁用其他json字段,但这不是我想要的。只是访问该字段的一种方法

最佳答案

t.Shipments是一个 slice -因此要访问其任何元素,您都必须传递一个索引-然后您可以访问该元素的字段,例如

if len(t.Shipments) > 0 {
fmt.Println(v.Shipments[0].ShipmentDate)
}

或在 slice 范围内:
for i, v := range t.Shipments {
fmt.Println(i, v.ShipmentDate)
}

关于go - 如何在Golang中的struct中访问嵌套字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59273747/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com