func awsRestjson1_deserializeDocumentRouteVehicleSpan()

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
}