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 'ApiApprovedEventData':
        return ApiApprovedEventData.fromJson(value);
      case 'ApiError':
        return ApiError.fromJson(value);
      case 'ApiRejectedEventData':
        return ApiRejectedEventData.fromJson(value);
      case 'AppliedEventData':
        return AppliedEventData.fromJson(value);
      case 'ApprovedEventData':
        return ApprovedEventData.fromJson(value);
      case 'AprType':
        return AprTypeTypeTransformer().decode(value);
      case 'BankAccountType':
        return BankAccountTypeTypeTransformer().decode(value);
      case 'BatchConsentVersion':
        return BatchConsentVersionTypeTransformer().decode(value);
      case 'CardBenefit':
        return CardBenefitTypeTransformer().decode(value);
      case 'CardPurpose':
        return CardPurposeTypeTransformer().decode(value);
      case 'CardType':
        return CardTypeTypeTransformer().decode(value);
      case 'CarrierDecisionType':
        return CarrierDecisionTypeTypeTransformer().decode(value);
      case 'CitizenshipStatus':
        return CitizenshipStatusTypeTransformer().decode(value);
      case 'CompoundingMethod':
        return CompoundingMethodTypeTransformer().decode(value);
      case 'ConversionEventData':
        return ConversionEventData.fromJson(value);
      case 'CreditCardOffer':
        return CreditCardOffer.fromJson(value);
      case 'CreditCardOfferDetails':
        return CreditCardOfferDetails.fromJson(value);
      case 'EducationLevel':
        return EducationLevelTypeTransformer().decode(value);
      case 'EmploymentPayFrequency':
        return EmploymentPayFrequencyTypeTransformer().decode(value);
      case 'EmploymentStatus':
        return EmploymentStatusTypeTransformer().decode(value);
      case 'EventData':
        return EventData.fromJson(value);
      case 'EventType':
        return EventTypeTypeTransformer().decode(value);
      case 'FeaturedFinancialInstitution':
        return FeaturedFinancialInstitution.fromJson(value);
      case 'FederalInsuranceType':
        return FederalInsuranceTypeTypeTransformer().decode(value);
      case 'FundedEventData':
        return FundedEventData.fromJson(value);
      case 'Gender':
        return GenderTypeTransformer().decode(value);
      case 'GraduateDegreeType':
        return GraduateDegreeTypeTypeTransformer().decode(value);
      case 'IdType':
        return IdTypeTypeTransformer().decode(value);
      case 'IncentiveDetails':
        return IncentiveDetails.fromJson(value);
      case 'IncentiveType':
        return IncentiveTypeTypeTransformer().decode(value);
      case 'IncentiveUnit':
        return IncentiveUnitTypeTransformer().decode(value);
      case 'IntroOfferType':
        return IntroOfferTypeTypeTransformer().decode(value);
      case 'Lead':
        return Lead.fromJson(value);
      case 'LeadAction':
        return LeadAction.fromJson(value);
      case 'LeadActionType':
        return LeadActionTypeTypeTransformer().decode(value);
      case 'LeadAutoInsuranceInformationJson':
        return LeadAutoInsuranceInformationJson.fromJson(value);
      case 'LeadAutoInsuranceInformationJsonAdditionalOperatorsInner':
        return LeadAutoInsuranceInformationJsonAdditionalOperatorsInner
            .fromJson(value);
      case 'LeadAutoInsuranceInformationJsonPolicyHolderInformation':
        return LeadAutoInsuranceInformationJsonPolicyHolderInformation
            .fromJson(value);
      case 'LeadAutoInsuranceInformationJsonVehiclesInner':
        return LeadAutoInsuranceInformationJsonVehiclesInner.fromJson(value);
      case 'LeadAutoInsuranceIssuerJson':
        return LeadAutoInsuranceIssuerJson.fromJson(value);
      case 'LeadAutoInsuranceVehicleMakeJson':
        return LeadAutoInsuranceVehicleMakeJson.fromJson(value);
      case 'LeadAutoInsuranceVehicleMakesJson':
        return LeadAutoInsuranceVehicleMakesJson.fromJson(value);
      case 'LeadAutoInsuranceVehicleModelJson':
        return LeadAutoInsuranceVehicleModelJson.fromJson(value);
      case 'LeadAutoInsuranceVehicleModelsJson':
        return LeadAutoInsuranceVehicleModelsJson.fromJson(value);
      case 'LeadAutoInsuranceVehicleTrimsJson':
        return LeadAutoInsuranceVehicleTrimsJson.fromJson(value);
      case 'LeadAutoInsuranceVehicleTrimsJsonTrimsInner':
        return LeadAutoInsuranceVehicleTrimsJsonTrimsInner.fromJson(value);
      case 'LeadAutoInsuranceVehicleYearsJson':
        return LeadAutoInsuranceVehicleYearsJson.fromJson(value);
      case 'LeadBestTimeToCall':
        return LeadBestTimeToCallTypeTransformer().decode(value);
      case 'LeadClientTag':
        return LeadClientTag.fromJson(value);
      case 'LeadClientTagsResponse':
        return LeadClientTagsResponse.fromJson(value);
      case 'LeadCoApplicantInformationJson':
        return LeadCoApplicantInformationJson.fromJson(value);
      case 'LeadCreateData':
        return LeadCreateData.fromJson(value);
      case 'LeadCreditCardInformationJson':
        return LeadCreditCardInformationJson.fromJson(value);
      case 'LeadCreditInformationJson':
        return LeadCreditInformationJson.fromJson(value);
      case 'LeadEducationInformationJson':
        return LeadEducationInformationJson.fromJson(value);
      case 'LeadEmploymentInformationJson':
        return LeadEmploymentInformationJson.fromJson(value);
      case 'LeadEvent':
        return LeadEvent.fromJson(value);
      case 'LeadEventResponse':
        return LeadEventResponse.fromJson(value);
      case 'LeadFinancialInformation':
        return LeadFinancialInformation.fromJson(value);
      case 'LeadHealthInformationJson':
        return LeadHealthInformationJson.fromJson(value);
      case 'LeadIdentificationInformationJson':
        return LeadIdentificationInformationJson.fromJson(value);
      case 'LeadInfoResponse':
        return LeadInfoResponse.fromJson(value);
      case 'LeadInfoResponseData':
        return LeadInfoResponseData.fromJson(value);
      case 'LeadLegalInformationJson':
        return LeadLegalInformationJson.fromJson(value);
      case 'LeadLoanInformationJson':
        return LeadLoanInformationJson.fromJson(value);
      case 'LeadMortgageInformationJson':
        return LeadMortgageInformationJson.fromJson(value);
      case 'LeadPayout':
        return LeadPayout.fromJson(value);
      case 'LeadPayoutResponse':
        return LeadPayoutResponse.fromJson(value);
      case 'LeadPersonalInformation':
        return LeadPersonalInformation.fromJson(value);
      case 'LeadPersonalReferenceInformationJson':
        return LeadPersonalReferenceInformationJson.fromJson(value);
      case 'LeadRefinanceLoanInformationJson':
        return LeadRefinanceLoanInformationJson.fromJson(value);
      case 'LeadSavingsInformationJson':
        return LeadSavingsInformationJson.fromJson(value);
      case 'LeadSessionInformationJson':
        return LeadSessionInformationJson.fromJson(value);
      case 'LeadUuid':
        return LeadUuid.fromJson(value);
      case 'LifeInsuranceOffer':
        return LifeInsuranceOffer.fromJson(value);
      case 'LifeInsuranceOfferDetails':
        return LifeInsuranceOfferDetails.fromJson(value);
      case 'ListedEventData':
        return ListedEventData.fromJson(value);
      case 'LoanOffer':
        return LoanOffer.fromJson(value);
      case 'LoanPurpose':
        return LoanPurposeTypeTransformer().decode(value);
      case 'MaritalStatus':
        return MaritalStatusTypeTransformer().decode(value);
      case 'MedicalExam':
        return MedicalExamTypeTransformer().decode(value);
      case 'MortechCreditRating':
        return MortechCreditRatingTypeTransformer().decode(value);
      case 'MortgageAdjustmentType':
        return MortgageAdjustmentTypeTypeTransformer().decode(value);
      case 'MortgageLoanType':
        return MortgageLoanTypeTypeTransformer().decode(value);
      case 'MortgageOffer':
        return MortgageOffer.fromJson(value);
      case 'MortgageOfferDetails':
        return MortgageOfferDetails.fromJson(value);
      case 'MortgageType':
        return MortgageTypeTypeTransformer().decode(value);
      case 'OccupancyType':
        return OccupancyTypeTypeTransformer().decode(value);
      case 'Offer':
        return Offer.fromJson(value);
      case 'OfferClickedEventData':
        return OfferClickedEventData.fromJson(value);
      case 'OfferDisplay':
        return OfferDisplay.fromJson(value);
      case 'OfferDisplayCreateData':
        return OfferDisplayCreateData.fromJson(value);
      case 'OpenedEventData':
        return OpenedEventData.fromJson(value);
      case 'Originator':
        return Originator.fromJson(value);
      case 'OriginatorImage':
        return OriginatorImage.fromJson(value);
      case 'PackageType':
        return PackageTypeTypeTransformer().decode(value);
      case 'Partner':
        return Partner.fromJson(value);
      case 'PendingResponse':
        return PendingResponse.fromJson(value);
      case 'PersonalReferenceRelationType':
        return PersonalReferenceRelationTypeTypeTransformer().decode(value);
      case 'PrefillResponse':
        return PrefillResponse.fromJson(value);
      case 'PreviewDetail':
        return PreviewDetail.fromJson(value);
      case 'ProductSubType':
        return ProductSubTypeTypeTransformer().decode(value);
      case 'ProductType':
        return ProductTypeTypeTransformer().decode(value);
      case 'PropertySearchStatus':
        return PropertySearchStatusTypeTransformer().decode(value);
      case 'PropertyStatus':
        return PropertyStatusTypeTransformer().decode(value);
      case 'PropertyType':
        return PropertyTypeTypeTransformer().decode(value);
      case 'ProvidedCreditRating':
        return ProvidedCreditRatingTypeTransformer().decode(value);
      case 'PurchaseStatus':
        return PurchaseStatusTypeTransformer().decode(value);
      case 'RateTable':
        return RateTable.fromJson(value);
      case 'RateTableAdditionalOffers':
        return RateTableAdditionalOffers.fromJson(value);
      case 'RefinanceLoanType':
        return RefinanceLoanTypeTypeTransformer().decode(value);
      case 'RefinanceType':
        return RefinanceTypeTypeTransformer().decode(value);
      case 'RejectReason':
        return RejectReasonTypeTransformer().decode(value);
      case 'SavingsOffer':
        return SavingsOffer.fromJson(value);
      case 'SavingsOfferDetails':
        return SavingsOfferDetails.fromJson(value);
      case 'SessionInit':
        return SessionInit.fromJson(value);
      case 'SessionInitCreateData':
        return SessionInitCreateData.fromJson(value);
      case 'SpecialOffer':
        return SpecialOffer.fromJson(value);
      case 'State':
        return StateTypeTransformer().decode(value);
      case 'TermUnit':
        return TermUnitTypeTransformer().decode(value);
      case 'VehicleDetails':
        return VehicleDetails.fromJson(value);
      case 'VehicleInformation':
        return VehicleInformation.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',
  );
}