[英]How to access a nested field in struct in Golang
假设我有这个结构块:
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
是一个切片 - 所以要访问它的任何元素,你必须传递一个索引 - 然后你可以访问该元素的字段,例如
if len(t.Shipments) > 0 {
fmt.Println(v.Shipments[0].ShipmentDate)
}
或覆盖切片:
for i, v := range t.Shipments {
fmt.Println(i, v.ShipmentDate)
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.