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 'ACourse':
        return ACourse.fromJson(value);
      case 'ACourseSubject':
        return ACourseSubject.fromJson(value);
      case 'ACourseSubscription':
        return ACourseSubscription.fromJson(value);
      case 'AcceptInvitation':
        return AcceptInvitation.fromJson(value);
      case 'AnswerTypeEnum':
        return AnswerTypeEnumTypeTransformer().decode(value);
      case 'Availability':
        return Availability.fromJson(value);
      case 'AvailabilitySlot':
        return AvailabilitySlot.fromJson(value);
      case 'BaseResponseDTO':
        return BaseResponseDTO.fromJson(value);
      case 'Booking':
        return Booking.fromJson(value);
      case 'BookingCancel':
        return BookingCancel.fromJson(value);
      case 'BookingReschedule':
        return BookingReschedule.fromJson(value);
      case 'BookingTime':
        return BookingTime.fromJson(value);
      case 'Card':
        return Card.fromJson(value);
      case 'CardCreate':
        return CardCreate.fromJson(value);
      case 'CategoryEnum':
        return CategoryEnumTypeTransformer().decode(value);
      case 'Chat':
        return Chat.fromJson(value);
      case 'ChatTutor':
        return ChatTutor.fromJson(value);
      case 'ChatUser':
        return ChatUser.fromJson(value);
      case 'CheckSMSVerificationCode':
        return CheckSMSVerificationCode.fromJson(value);
      case 'ClearPhoneCache':
        return ClearPhoneCache.fromJson(value);
      case 'ConfirmedStatusEnum':
        return ConfirmedStatusEnumTypeTransformer().decode(value);
      case 'ContactUs':
        return ContactUs.fromJson(value);
      case 'Country':
        return Country.fromJson(value);
      case 'Coupon':
        return Coupon.fromJson(value);
      case 'CouponCodeCheck':
        return CouponCodeCheck.fromJson(value);
      case 'CourseOption':
        return CourseOption.fromJson(value);
      case 'CreateAccount':
        return CreateAccount.fromJson(value);
      case 'CreateSMSAccountRequestDTO':
        return CreateSMSAccountRequestDTO.fromJson(value);
      case 'CreateSMSAccountResponseDTO':
        return CreateSMSAccountResponseDTO.fromJson(value);
      case 'CreateSMSCustomerRequestDTO':
        return CreateSMSCustomerRequestDTO.fromJson(value);
      case 'CreateSMSCustomerResponseDTO':
        return CreateSMSCustomerResponseDTO.fromJson(value);
      case 'Customer':
        return Customer.fromJson(value);
      case 'CustomerEnquiry':
        return CustomerEnquiry.fromJson(value);
      case 'CustomerFeedback':
        return CustomerFeedback.fromJson(value);
      case 'CustomerFeedbackStatusEnum':
        return CustomerFeedbackStatusEnumTypeTransformer().decode(value);
      case 'CustomerInterest':
        return CustomerInterest.fromJson(value);
      case 'CustomerJobPostCreate':
        return CustomerJobPostCreate.fromJson(value);
      case 'CustomerProfile':
        return CustomerProfile.fromJson(value);
      case 'CustomerSettings':
        return CustomerSettings.fromJson(value);
      case 'Day':
        return Day.fromJson(value);
      case 'DayEnum':
        return DayEnumTypeTransformer().decode(value);
      case 'DiscountTypeEnum':
        return DiscountTypeEnumTypeTransformer().decode(value);
      case 'DownloadRequest':
        return DownloadRequest.fromJson(value);
      case 'EmailConfirmation':
        return EmailConfirmation.fromJson(value);
      case 'Enquiry':
        return Enquiry.fromJson(value);
      case 'FcmDeviceToken':
        return FcmDeviceToken.fromJson(value);
      case 'FeedbackBooking':
        return FeedbackBooking.fromJson(value);
      case 'FeedbackSerialCourse':
        return FeedbackSerialCourse.fromJson(value);
      case 'FindTutorRequest':
        return FindTutorRequest.fromJson(value);
      case 'FullChat':
        return FullChat.fromJson(value);
      case 'FullUser':
        return FullUser.fromJson(value);
      case 'GroupSubjects':
        return GroupSubjects.fromJson(value);
      case 'IndexTutorCard':
        return IndexTutorCard.fromJson(value);
      case 'IndexTutors':
        return IndexTutors.fromJson(value);
      case 'Interest':
        return Interest.fromJson(value);
      case 'Invitation':
        return Invitation.fromJson(value);
      case 'InvitationDate':
        return InvitationDate.fromJson(value);
      case 'InvitationDateCreate':
        return InvitationDateCreate.fromJson(value);
      case 'InvitationInstant':
        return InvitationInstant.fromJson(value);
      case 'JobApplication':
        return JobApplication.fromJson(value);
      case 'JobApplicationCreate':
        return JobApplicationCreate.fromJson(value);
      case 'JobApplicationTutor':
        return JobApplicationTutor.fromJson(value);
      case 'JobApplicationTutorMinimal':
        return JobApplicationTutorMinimal.fromJson(value);
      case 'JobPostAvailability':
        return JobPostAvailability.fromJson(value);
      case 'JobPostDetail':
        return JobPostDetail.fromJson(value);
      case 'JobPostList':
        return JobPostList.fromJson(value);
      case 'JobPostShort':
        return JobPostShort.fromJson(value);
      case 'JobPostStudentAvailability':
        return JobPostStudentAvailability.fromJson(value);
      case 'JobPostView':
        return JobPostView.fromJson(value);
      case 'JobTypeEnum':
        return JobTypeEnumTypeTransformer().decode(value);
      case 'LastMessage':
        return LastMessage.fromJson(value);
      case 'LessonPrice':
        return LessonPrice.fromJson(value);
      case 'Level':
        return Level.fromJson(value);
      case 'LiveSessionTypeEnum':
        return LiveSessionTypeEnumTypeTransformer().decode(value);
      case 'LoginNewRequestDTO':
        return LoginNewRequestDTO.fromJson(value);
      case 'LoginRequestDTO':
        return LoginRequestDTO.fromJson(value);
      case 'LoginResponseDTO':
        return LoginResponseDTO.fromJson(value);
      case 'Message':
        return Message.fromJson(value);
      case 'MessageTutorEnquiry':
        return MessageTutorEnquiry.fromJson(value);
      case 'NotificationActionEnum':
        return NotificationActionEnumTypeTransformer().decode(value);
      case 'NotificationType':
        return NotificationType.fromJson(value);
      case 'OnboardingFlowCreateCustomer':
        return OnboardingFlowCreateCustomer.fromJson(value);
      case 'PaginatedCustomerFeedbackList':
        return PaginatedCustomerFeedbackList.fromJson(value);
      case 'PaginatedJobApplicationList':
        return PaginatedJobApplicationList.fromJson(value);
      case 'PaginatedPushNotificationList':
        return PaginatedPushNotificationList.fromJson(value);
      case 'PaginatedTutorCardList':
        return PaginatedTutorCardList.fromJson(value);
      case 'PaginatedTutorJobPostViewList':
        return PaginatedTutorJobPostViewList.fromJson(value);
      case 'PaginatedTutorReferenceListList':
        return PaginatedTutorReferenceListList.fromJson(value);
      case 'PaginatedUserNotificationList':
        return PaginatedUserNotificationList.fromJson(value);
      case 'PasswordRestRequest':
        return PasswordRestRequest.fromJson(value);
      case 'PatchedBooking':
        return PatchedBooking.fromJson(value);
      case 'PatchedBookingReschedule':
        return PatchedBookingReschedule.fromJson(value);
      case 'PatchedCustomerFeedback':
        return PatchedCustomerFeedback.fromJson(value);
      case 'PatchedCustomerSettings':
        return PatchedCustomerSettings.fromJson(value);
      case 'PatchedInvitation':
        return PatchedInvitation.fromJson(value);
      case 'PatchedPersonalityTestLevel':
        return PatchedPersonalityTestLevel.fromJson(value);
      case 'PatchedTutorFeedback':
        return PatchedTutorFeedback.fromJson(value);
      case 'PatchedTutorInvitation':
        return PatchedTutorInvitation.fromJson(value);
      case 'PatchedTutorProfileOnboarding':
        return PatchedTutorProfileOnboarding.fromJson(value);
      case 'PatchedTutorReference':
        return PatchedTutorReference.fromJson(value);
      case 'PatchedTutorReview':
        return PatchedTutorReview.fromJson(value);
      case 'PatchedTutorSettings':
        return PatchedTutorSettings.fromJson(value);
      case 'PatchedTutorSupplyProfile':
        return PatchedTutorSupplyProfile.fromJson(value);
      case 'PatchedUserProfile':
        return PatchedUserProfile.fromJson(value);
      case 'PatchedUserProfileUpdateRequestDTO':
        return PatchedUserProfileUpdateRequestDTO.fromJson(value);
      case 'PatchedtutorBooking':
        return PatchedtutorBooking.fromJson(value);
      case 'PatchedtutorSerialCourse':
        return PatchedtutorSerialCourse.fromJson(value);
      case 'PersonalityEnquiry':
        return PersonalityEnquiry.fromJson(value);
      case 'PersonalityTestLevel':
        return PersonalityTestLevel.fromJson(value);
      case 'PersonalityTestSubject':
        return PersonalityTestSubject.fromJson(value);
      case 'PhoneConfirmation':
        return PhoneConfirmation.fromJson(value);
      case 'PhoneConfirmationResend':
        return PhoneConfirmationResend.fromJson(value);
      case 'ProfileAttachment':
        return ProfileAttachment.fromJson(value);
      case 'PushNotification':
        return PushNotification.fromJson(value);
      case 'Qualification':
        return Qualification.fromJson(value);
      case 'Question':
        return Question.fromJson(value);
      case 'QuestionOption':
        return QuestionOption.fromJson(value);
      case 'RecaptchaToken':
        return RecaptchaToken.fromJson(value);
      case 'RecordAction':
        return RecordAction.fromJson(value);
      case 'RequestTutor':
        return RequestTutor.fromJson(value);
      case 'School':
        return School.fromJson(value);
      case 'SchoolsupplyRequestTutor':
        return SchoolsupplyRequestTutor.fromJson(value);
      case 'SendEmailVerificationCode':
        return SendEmailVerificationCode.fromJson(value);
      case 'SendPersonalityEnquiryToTutor':
        return SendPersonalityEnquiryToTutor.fromJson(value);
      case 'SendSMSVerificationCode':
        return SendSMSVerificationCode.fromJson(value);
      case 'SerialCourseCustomer':
        return SerialCourseCustomer.fromJson(value);
      case 'Session':
        return Session.fromJson(value);
      case 'SetupIntent':
        return SetupIntent.fromJson(value);
      case 'SimpleSubjectLevel':
        return SimpleSubjectLevel.fromJson(value);
      case 'SocialAuthMethodEnum':
        return SocialAuthMethodEnumTypeTransformer().decode(value);
      case 'SocialLogin':
        return SocialLogin.fromJson(value);
      case 'SocialToken':
        return SocialToken.fromJson(value);
      case 'Status384Enum':
        return Status384EnumTypeTransformer().decode(value);
      case 'StatusC27Enum':
        return StatusC27EnumTypeTransformer().decode(value);
      case 'StripeAuthorize':
        return StripeAuthorize.fromJson(value);
      case 'StudentPersonality':
        return StudentPersonality.fromJson(value);
      case 'Subject':
        return Subject.fromJson(value);
      case 'SubjectLevel':
        return SubjectLevel.fromJson(value);
      case 'SubjectLevels':
        return SubjectLevels.fromJson(value);
      case 'SubscribedNotification':
        return SubscribedNotification.fromJson(value);
      case 'SubscriptionStatusEnum':
        return SubscriptionStatusEnumTypeTransformer().decode(value);
      case 'SupplyTeachingExperience':
        return SupplyTeachingExperience.fromJson(value);
      case 'SupplyTeachingLevel':
        return SupplyTeachingLevel.fromJson(value);
      case 'TeachingExperience':
        return TeachingExperience.fromJson(value);
      case 'TeachingFrequency':
        return TeachingFrequency.fromJson(value);
      case 'TeachingLevel':
        return TeachingLevel.fromJson(value);
      case 'TestAnswer':
        return TestAnswer.fromJson(value);
      case 'TrialCallInvitation':
        return TrialCallInvitation.fromJson(value);
      case 'Tutor':
        return Tutor.fromJson(value);
      case 'TutorAvailability':
        return TutorAvailability.fromJson(value);
      case 'TutorBooking':
        return TutorBooking.fromJson(value);
      case 'TutorCard':
        return TutorCard.fromJson(value);
      case 'TutorCardSubject':
        return TutorCardSubject.fromJson(value);
      case 'TutorCreateAccount':
        return TutorCreateAccount.fromJson(value);
      case 'TutorCruncherSignup':
        return TutorCruncherSignup.fromJson(value);
      case 'TutorEnquiry':
        return TutorEnquiry.fromJson(value);
      case 'TutorFeedback':
        return TutorFeedback.fromJson(value);
      case 'TutorInvitation':
        return TutorInvitation.fromJson(value);
      case 'TutorInvitationCreate':
        return TutorInvitationCreate.fromJson(value);
      case 'TutorInvitationResponse':
        return TutorInvitationResponse.fromJson(value);
      case 'TutorJobPostView':
        return TutorJobPostView.fromJson(value);
      case 'TutorLogin':
        return TutorLogin.fromJson(value);
      case 'TutorPersonalityEnquiry':
        return TutorPersonalityEnquiry.fromJson(value);
      case 'TutorProfile':
        return TutorProfile.fromJson(value);
      case 'TutorProfileDisplay':
        return TutorProfileDisplay.fromJson(value);
      case 'TutorProfileFiles':
        return TutorProfileFiles.fromJson(value);
      case 'TutorProfileMinimal':
        return TutorProfileMinimal.fromJson(value);
      case 'TutorProfileOnboarding':
        return TutorProfileOnboarding.fromJson(value);
      case 'TutorProfileOnboardingDTO':
        return TutorProfileOnboardingDTO.fromJson(value);
      case 'TutorQualification':
        return TutorQualification.fromJson(value);
      case 'TutorReference':
        return TutorReference.fromJson(value);
      case 'TutorReferenceCreate':
        return TutorReferenceCreate.fromJson(value);
      case 'TutorReferenceList':
        return TutorReferenceList.fromJson(value);
      case 'TutorReview':
        return TutorReview.fromJson(value);
      case 'TutorSMSCreateAccount':
        return TutorSMSCreateAccount.fromJson(value);
      case 'TutorSerialCourse':
        return TutorSerialCourse.fromJson(value);
      case 'TutorSettings':
        return TutorSettings.fromJson(value);
      case 'TutorSubject':
        return TutorSubject.fromJson(value);
      case 'TutorSupplyProfile':
        return TutorSupplyProfile.fromJson(value);
      case 'TutorTimeOff':
        return TutorTimeOff.fromJson(value);
      case 'TypeAf8Enum':
        return TypeAf8EnumTypeTransformer().decode(value);
      case 'User':
        return User.fromJson(value);
      case 'UserDataDTO':
        return UserDataDTO.fromJson(value);
      case 'UserNotification':
        return UserNotification.fromJson(value);
      case 'UserNotificationTypeEnum':
        return UserNotificationTypeEnumTypeTransformer().decode(value);
      case 'UserProfile':
        return UserProfile.fromJson(value);
      case 'UserProfileResponseDTO':
        return UserProfileResponseDTO.fromJson(value);
      case 'UserProfileUpdateRequestDTO':
        return UserProfileUpdateRequestDTO.fromJson(value);
      case 'UserRetrival':
        return UserRetrival.fromJson(value);
      case 'UserUpdate':
        return UserUpdate.fromJson(value);
      case 'ZoomMeeting':
        return ZoomMeeting.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',);
}