in service/georoutes/deserializers.go [8194:8402]
func awsRestjson1_deserializeDocumentRouteVehicleSpan(v **types.RouteVehicleSpan, value interface{}) error {
if v == nil {
return fmt.Errorf("unexpected nil of type %T", v)
}
if value == nil {
return nil
}
shape, ok := value.(map[string]interface{})
if !ok {
return fmt.Errorf("unexpected JSON type %v", value)
}
var sv *types.RouteVehicleSpan
if *v == nil {
sv = &types.RouteVehicleSpan{}
} else {
sv = *v
}
for key, value := range shape {
switch key {
case "BestCaseDuration":
if value != nil {
jtv, ok := value.(json.Number)
if !ok {
return fmt.Errorf("expected DurationSeconds to be json.Number, got %T instead", value)
}
i64, err := jtv.Int64()
if err != nil {
return err
}
sv.BestCaseDuration = i64
}
case "CarAccess":
if err := awsRestjson1_deserializeDocumentRouteSpanCarAccessAttributeList(&sv.CarAccess, value); err != nil {
return err
}
case "Country":
if value != nil {
jtv, ok := value.(string)
if !ok {
return fmt.Errorf("expected CountryCode3 to be of type string, got %T instead", value)
}
sv.Country = ptr.String(jtv)
}
case "Distance":
if value != nil {
jtv, ok := value.(json.Number)
if !ok {
return fmt.Errorf("expected DistanceMeters to be json.Number, got %T instead", value)
}
i64, err := jtv.Int64()
if err != nil {
return err
}
sv.Distance = i64
}
case "Duration":
if value != nil {
jtv, ok := value.(json.Number)
if !ok {
return fmt.Errorf("expected DurationSeconds to be json.Number, got %T instead", value)
}
i64, err := jtv.Int64()
if err != nil {
return err
}
sv.Duration = i64
}
case "DynamicSpeed":
if err := awsRestjson1_deserializeDocumentRouteSpanDynamicSpeedDetails(&sv.DynamicSpeed, value); err != nil {
return err
}
case "FunctionalClassification":
if value != nil {
jtv, ok := value.(json.Number)
if !ok {
return fmt.Errorf("expected Integer to be json.Number, got %T instead", value)
}
i64, err := jtv.Int64()
if err != nil {
return err
}
sv.FunctionalClassification = ptr.Int32(int32(i64))
}
case "Gate":
if value != nil {
jtv, ok := value.(string)
if !ok {
return fmt.Errorf("expected RouteSpanGateAttribute to be of type string, got %T instead", value)
}
sv.Gate = types.RouteSpanGateAttribute(jtv)
}
case "GeometryOffset":
if value != nil {
jtv, ok := value.(json.Number)
if !ok {
return fmt.Errorf("expected Integer to be json.Number, got %T instead", value)
}
i64, err := jtv.Int64()
if err != nil {
return err
}
sv.GeometryOffset = ptr.Int32(int32(i64))
}
case "Incidents":
if err := awsRestjson1_deserializeDocumentIndexList(&sv.Incidents, value); err != nil {
return err
}
case "Names":
if err := awsRestjson1_deserializeDocumentLocalizedStringList(&sv.Names, value); err != nil {
return err
}
case "Notices":
if err := awsRestjson1_deserializeDocumentIndexList(&sv.Notices, value); err != nil {
return err
}
case "RailwayCrossing":
if value != nil {
jtv, ok := value.(string)
if !ok {
return fmt.Errorf("expected RouteSpanRailwayCrossingAttribute to be of type string, got %T instead", value)
}
sv.RailwayCrossing = types.RouteSpanRailwayCrossingAttribute(jtv)
}
case "Region":
if value != nil {
jtv, ok := value.(string)
if !ok {
return fmt.Errorf("expected String to be of type string, got %T instead", value)
}
sv.Region = ptr.String(jtv)
}
case "RoadAttributes":
if err := awsRestjson1_deserializeDocumentRouteSpanRoadAttributeList(&sv.RoadAttributes, value); err != nil {
return err
}
case "RouteNumbers":
if err := awsRestjson1_deserializeDocumentRouteNumberList(&sv.RouteNumbers, value); err != nil {
return err
}
case "ScooterAccess":
if err := awsRestjson1_deserializeDocumentRouteSpanScooterAccessAttributeList(&sv.ScooterAccess, value); err != nil {
return err
}
case "SpeedLimit":
if err := awsRestjson1_deserializeDocumentRouteSpanSpeedLimitDetails(&sv.SpeedLimit, value); err != nil {
return err
}
case "TollSystems":
if err := awsRestjson1_deserializeDocumentIndexList(&sv.TollSystems, value); err != nil {
return err
}
case "TruckAccess":
if err := awsRestjson1_deserializeDocumentRouteSpanTruckAccessAttributeList(&sv.TruckAccess, value); err != nil {
return err
}
case "TruckRoadTypes":
if err := awsRestjson1_deserializeDocumentIndexList(&sv.TruckRoadTypes, value); err != nil {
return err
}
case "TypicalDuration":
if value != nil {
jtv, ok := value.(json.Number)
if !ok {
return fmt.Errorf("expected DurationSeconds to be json.Number, got %T instead", value)
}
i64, err := jtv.Int64()
if err != nil {
return err
}
sv.TypicalDuration = i64
}
case "Zones":
if err := awsRestjson1_deserializeDocumentIndexList(&sv.Zones, value); err != nil {
return err
}
default:
_, _ = key, value
}
}
*v = sv
return nil
}