fromJson static method

dynamic fromJson(
  1. dynamic value,
  2. String targetType, {
  3. bool growable = false,
})

Returns a native instance of an OpenAPI class matching the targetType.

Implementation

static dynamic fromJson(
  dynamic value,
  String targetType, {
  bool growable = false,
}) {
  try {
    switch (targetType) {
      case 'String':
        return value is String ? value : value.toString();
      case 'int':
        return value is int ? value : int.parse('$value');
      case 'double':
        return value is double ? value : double.parse('$value');
      case 'bool':
        if (value is bool) {
          return value;
        }
        final valueString = '$value'.toLowerCase();
        return valueString == 'true' || valueString == '1';
      case 'DateTime':
        return value is DateTime ? value : DateTime.tryParse(value);
      case 'AircraftContract':
        return AircraftContract.fromJson(value);
      case 'AircraftContractImage':
        return AircraftContractImage.fromJson(value);
      case 'AircraftContractPagedCollectionContract':
        return AircraftContractPagedCollectionContract.fromJson(value);
      case 'AircraftRecognitionResultContract':
        return AircraftRecognitionResultContract.fromJson(value);
      case 'AircraftRegistrationContract':
        return AircraftRegistrationContract.fromJson(value);
      case 'AircraftSearchByEnum':
        return AircraftSearchByEnumTypeTransformer().decode(value);
      case 'AirportCodesByEnum':
        return AirportCodesByEnumTypeTransformer().decode(value);
      case 'AirportContinentContract':
        return AirportContinentContract.fromJson(value);
      case 'AirportContract':
        return AirportContract.fromJson(value);
      case 'AirportContractCurrentTime':
        return AirportContractCurrentTime.fromJson(value);
      case 'AirportContractUrls':
        return AirportContractUrls.fromJson(value);
      case 'AirportCountryContract':
        return AirportCountryContract.fromJson(value);
      case 'AirportDelayContract':
        return AirportDelayContract.fromJson(value);
      case 'AirportDistanceTimeContract':
        return AirportDistanceTimeContract.fromJson(value);
      case 'AirportFeedServiceStatusContract':
        return AirportFeedServiceStatusContract.fromJson(value);
      case 'AirportFidsContract':
        return AirportFidsContract.fromJson(value);
      case 'AirportFlightContract':
        return AirportFlightContract.fromJson(value);
      case 'AirportFlightContractAircraft':
        return AirportFlightContractAircraft.fromJson(value);
      case 'AirportFlightContractAirline':
        return AirportFlightContractAirline.fromJson(value);
      case 'AirportFlightContractArrival':
        return AirportFlightContractArrival.fromJson(value);
      case 'AirportFlightContractDeparture':
        return AirportFlightContractDeparture.fromJson(value);
      case 'AirportFlightContractLocation':
        return AirportFlightContractLocation.fromJson(value);
      case 'AirportFlightContractMovement':
        return AirportFlightContractMovement.fromJson(value);
      case 'AirportLocalTimeContract':
        return AirportLocalTimeContract.fromJson(value);
      case 'Angle':
        return Angle.fromJson(value);
      case 'Azimuth':
        return Azimuth.fromJson(value);
      case 'CloudCover':
        return CloudCoverTypeTransformer().decode(value);
      case 'CodeshareStatus':
        return CodeshareStatusTypeTransformer().decode(value);
      case 'CreateWebHookSubscription':
        return CreateWebHookSubscription.fromJson(value);
      case 'DailyRouteStatContract':
        return DailyRouteStatContract.fromJson(value);
      case 'DailyRouteStatRecordContract':
        return DailyRouteStatRecordContract.fromJson(value);
      case 'DateTimeContract':
        return DateTimeContract.fromJson(value);
      case 'DayTime':
        return DayTimeTypeTransformer().decode(value);
      case 'DelayBracketContract':
        return DelayBracketContract.fromJson(value);
      case 'Distance':
        return Distance.fromJson(value);
      case 'EngineType':
        return EngineTypeTypeTransformer().decode(value);
      case 'ErrorContract':
        return ErrorContract.fromJson(value);
      case 'FeedServiceEnum':
        return FeedServiceEnumTypeTransformer().decode(value);
      case 'FeedServiceStatus':
        return FeedServiceStatusTypeTransformer().decode(value);
      case 'FeedServiceStatusContract':
        return FeedServiceStatusContract.fromJson(value);
      case 'FlightAircraftContract':
        return FlightAircraftContract.fromJson(value);
      case 'FlightAircraftContractImage':
        return FlightAircraftContractImage.fromJson(value);
      case 'FlightAirlineContract':
        return FlightAirlineContract.fromJson(value);
      case 'FlightAirportMovementContract':
        return FlightAirportMovementContract.fromJson(value);
      case 'FlightAirportMovementContractRevisedTime':
        return FlightAirportMovementContractRevisedTime.fromJson(value);
      case 'FlightAirportMovementContractRunwayTime':
        return FlightAirportMovementContractRunwayTime.fromJson(value);
      case 'FlightAirportMovementContractScheduledTime':
        return FlightAirportMovementContractScheduledTime.fromJson(value);
      case 'FlightAirportMovementQualityEnum':
        return FlightAirportMovementQualityEnumTypeTransformer()
            .decode(value);
      case 'FlightBatchDelayContract':
        return FlightBatchDelayContract.fromJson(value);
      case 'FlightContract':
        return FlightContract.fromJson(value);
      case 'FlightContractGreatCircleDistance':
        return FlightContractGreatCircleDistance.fromJson(value);
      case 'FlightDataGeneralAvailabilityContract':
        return FlightDataGeneralAvailabilityContract.fromJson(value);
      case 'FlightDelayContract':
        return FlightDelayContract.fromJson(value);
      case 'FlightDirection':
        return FlightDirectionTypeTransformer().decode(value);
      case 'FlightLegDelayContract':
        return FlightLegDelayContract.fromJson(value);
      case 'FlightLocationContract':
        return FlightLocationContract.fromJson(value);
      case 'FlightNotificationContract':
        return FlightNotificationContract.fromJson(value);
      case 'FlightNotificationContractSubscription':
        return FlightNotificationContractSubscription.fromJson(value);
      case 'FlightSearchByEnum':
        return FlightSearchByEnumTypeTransformer().decode(value);
      case 'FlightStatus':
        return FlightStatusTypeTransformer().decode(value);
      case 'GeoCoordinatesContract':
        return GeoCoordinatesContract.fromJson(value);
      case 'GeoCoordinatesContractListingAirportContractSearchResultCollectionContract':
        return GeoCoordinatesContractListingAirportContractSearchResultCollectionContract
            .fromJson(value);
      case 'LicenseType':
        return LicenseTypeTypeTransformer().decode(value);
      case 'ListingAirportContract':
        return ListingAirportContract.fromJson(value);
      case 'ListingAirportContractLocation':
        return ListingAirportContractLocation.fromJson(value);
      case 'ModelFlightTimeEnum':
        return ModelFlightTimeEnumTypeTransformer().decode(value);
      case 'PercentileBracketContract':
        return PercentileBracketContract.fromJson(value);
      case 'PhenomenaGroup':
        return PhenomenaGroupTypeTransformer().decode(value);
      case 'Pressure':
        return Pressure.fromJson(value);
      case 'ResourceContract':
        return ResourceContract.fromJson(value);
      case 'RunwayContract':
        return RunwayContract.fromJson(value);
      case 'RunwayContractDisplacedThreshold':
        return RunwayContractDisplacedThreshold.fromJson(value);
      case 'RunwayContractLength':
        return RunwayContractLength.fromJson(value);
      case 'RunwayContractLocation':
        return RunwayContractLocation.fromJson(value);
      case 'RunwayContractWidth':
        return RunwayContractWidth.fromJson(value);
      case 'SolarStateContract':
        return SolarStateContract.fromJson(value);
      case 'SolarStateContractDawnAstronomical':
        return SolarStateContractDawnAstronomical.fromJson(value);
      case 'SolarStateContractDawnCivil':
        return SolarStateContractDawnCivil.fromJson(value);
      case 'SolarStateContractDawnNautical':
        return SolarStateContractDawnNautical.fromJson(value);
      case 'SolarStateContractDuskAstronomical':
        return SolarStateContractDuskAstronomical.fromJson(value);
      case 'SolarStateContractDuskCivil':
        return SolarStateContractDuskCivil.fromJson(value);
      case 'SolarStateContractDuskNautical':
        return SolarStateContractDuskNautical.fromJson(value);
      case 'SolarStateContractNoonTrue':
        return SolarStateContractNoonTrue.fromJson(value);
      case 'SolarStateContractSunrise':
        return SolarStateContractSunrise.fromJson(value);
      case 'SolarStateContractSunset':
        return SolarStateContractSunset.fromJson(value);
      case 'Speed':
        return Speed.fromJson(value);
      case 'StatisticClass':
        return StatisticClassTypeTransformer().decode(value);
      case 'StringCollectionContract':
        return StringCollectionContract.fromJson(value);
      case 'StringListingAirportContractSearchResultCollectionContract':
        return StringListingAirportContractSearchResultCollectionContract
            .fromJson(value);
      case 'SubscriberContract':
        return SubscriberContract.fromJson(value);
      case 'SubscriptionContract':
        return SubscriptionContract.fromJson(value);
      case 'SubscriptionSubjectContract':
        return SubscriptionSubjectContract.fromJson(value);
      case 'SubscriptionSubjectType':
        return SubscriptionSubjectTypeTypeTransformer().decode(value);
      case 'SurfaceType':
        return SurfaceTypeTypeTransformer().decode(value);
      case 'Temperature':
        return Temperature.fromJson(value);
      case 'WeatherStateContract':
        return WeatherStateContract.fromJson(value);
      case 'WeatherStateContractAirTemperature':
        return WeatherStateContractAirTemperature.fromJson(value);
      case 'WeatherStateContractCloudBase':
        return WeatherStateContractCloudBase.fromJson(value);
      case 'WeatherStateContractDewPoint':
        return WeatherStateContractDewPoint.fromJson(value);
      case 'WeatherStateContractPressure':
        return WeatherStateContractPressure.fromJson(value);
      case 'WeatherStateContractVisibility':
        return WeatherStateContractVisibility.fromJson(value);
      case 'WeatherStateContractWind':
        return WeatherStateContractWind.fromJson(value);
      case 'WindContract':
        return WindContract.fromJson(value);
      case 'WindContractGusts':
        return WindContractGusts.fromJson(value);
      default:
        dynamic match;
        if (value is List &&
            (match = _regList.firstMatch(targetType)?.group(1)) != null) {
          return value
              .map<dynamic>((dynamic v) => fromJson(
                    v,
                    match,
                    growable: growable,
                  ))
              .toList(growable: growable);
        }
        if (value is Set &&
            (match = _regSet.firstMatch(targetType)?.group(1)) != null) {
          return value
              .map<dynamic>((dynamic v) => fromJson(
                    v,
                    match,
                    growable: growable,
                  ))
              .toSet();
        }
        if (value is Map &&
            (match = _regMap.firstMatch(targetType)?.group(1)) != null) {
          return Map<String, dynamic>.fromIterables(
            value.keys.cast<String>(),
            value.values.map<dynamic>((dynamic v) => fromJson(
                  v,
                  match,
                  growable: growable,
                )),
          );
        }
    }
  } on Exception catch (error, trace) {
    throw ApiException.withInner(
      HttpStatus.internalServerError,
      'Exception during deserialization.',
      error,
      trace,
    );
  }
  throw ApiException(
    HttpStatus.internalServerError,
    'Could not find a suitable class for deserialization',
  );
}