如何访问Golang中struct中的嵌套字段
假设我有一个structblock:如何访问Golang中struct中的嵌套字段,go,struct,Go,Struct,假设我有一个structblock: type AllShipments struct { Shipments []struct { ShipmentID int `json:"shipmentId"` ShipmentDate time.Time `json:"shipmentDate"` ShipmentItems []struct { OrderItemID string `json:"or
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.shippings.shipmentDate
,但没有成功t.t
确实过滤出了第一个数组。那么最好的方法是什么呢?我知道我可以使用“json:-”
禁用其他json字段,但这不是我想要的。访问该字段的唯一方法是一个切片,因此要访问它的任何元素,必须传递一个索引,然后才能访问该元素的字段,例如
if len(t.Shipments) > 0 {
fmt.Println(v.Shipments[0].ShipmentDate)
}
或在切片上设置范围:
for i, v := range t.Shipments {
fmt.Println(i, v.ShipmentDate)
}
您需要索引到切片以访问其元素。请拿着这个,切片和其他基础知识都在那里。