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 'ActionDTOInternal':
        return ActionDTOInternal.fromJson(value);
      case 'ActionFeedbackDTOInternal':
        return ActionFeedbackDTOInternal.fromJson(value);
      case 'AppApiStatusDTO':
        return AppApiStatusDTO.fromJson(value);
      case 'ChangeDTO':
        return ChangeDTO.fromJson(value);
      case 'ChangeParameterDTO':
        return ChangeParameterDTO.fromJson(value);
      case 'ChangeStateDTO':
        return ChangeStateDTO.fromJson(value);
      case 'ChangeSubjectDTO':
        return ChangeSubjectDTO.fromJson(value);
      case 'ChecklistItemMobileDTO':
        return ChecklistItemMobileDTO.fromJson(value);
      case 'ChecklistItemMobileDTOInternal':
        return ChecklistItemMobileDTOInternal.fromJson(value);
      case 'EventMetadata':
        return EventMetadata.fromJson(value);
      case 'FileDTO':
        return FileDTO.fromJson(value);
      case 'FileTransferDTO':
        return FileTransferDTO.fromJson(value);
      case 'FileTransferDTOInternal':
        return FileTransferDTOInternal.fromJson(value);
      case 'FilterParam':
        return FilterParamTypeTransformer().decode(value);
      case 'HistoryEventDTO':
        return HistoryEventDTO.fromJson(value);
      case 'HomeAccountObjectDTO':
        return HomeAccountObjectDTO.fromJson(value);
      case 'HomeAccountObjectItemDTO':
        return HomeAccountObjectItemDTO.fromJson(value);
      case 'HomeAccountOptionsDTO':
        return HomeAccountOptionsDTO.fromJson(value);
      case 'MemberNotificationOverrideDTO':
        return MemberNotificationOverrideDTO.fromJson(value);
      case 'MobileAddCommentDTO':
        return MobileAddCommentDTO.fromJson(value);
      case 'MobileEditCommentDTO':
        return MobileEditCommentDTO.fromJson(value);
      case 'NotificationSettingsDTO':
        return NotificationSettingsDTO.fromJson(value);
      case 'ReactionResultDTO':
        return ReactionResultDTO.fromJson(value);
      case 'RelatedEntityDTO':
        return RelatedEntityDTO.fromJson(value);
      case 'TicketAttachmentDTOInternal':
        return TicketAttachmentDTOInternal.fromJson(value);
      case 'TicketCategoryDTO':
        return TicketCategoryDTO.fromJson(value);
      case 'TicketLifecycleMobileDTO':
        return TicketLifecycleMobileDTO.fromJson(value);
      case 'TicketListMobileDTO':
        return TicketListMobileDTO.fromJson(value);
      case 'TicketMemberAccountDTO':
        return TicketMemberAccountDTO.fromJson(value);
      case 'TicketMemberAddDTO':
        return TicketMemberAddDTO.fromJson(value);
      case 'TicketMemberContactDTO':
        return TicketMemberContactDTO.fromJson(value);
      case 'TicketMemberContactDTOInternal':
        return TicketMemberContactDTOInternal.fromJson(value);
      case 'TicketMemberMobileDTO':
        return TicketMemberMobileDTO.fromJson(value);
      case 'TicketMobileBaseDTO':
        return TicketMobileBaseDTO.fromJson(value);
      case 'TicketMobileBaseDTOInternal':
        return TicketMobileBaseDTOInternal.fromJson(value);
      case 'TicketMobileCommentDTO':
        return TicketMobileCommentDTO.fromJson(value);
      case 'TicketMobileDTOInternal':
        return TicketMobileDTOInternal.fromJson(value);
      case 'TicketMobileWithLastCommentDTO':
        return TicketMobileWithLastCommentDTO.fromJson(value);
      case 'TicketRelatedDTO':
        return TicketRelatedDTO.fromJson(value);
      case 'TicketRelatedDTOInternal':
        return TicketRelatedDTOInternal.fromJson(value);
      case 'TicketSaveMobileDTOInternal':
        return TicketSaveMobileDTOInternal.fromJson(value);
      case 'TicketStatisticsDTO':
        return TicketStatisticsDTO.fromJson(value);
      case 'UserNotificationPreferenceDTO':
        return UserNotificationPreferenceDTO.fromJson(value);
      case 'ValidationErrorDTO':
        return ValidationErrorDTO.fromJson(value);
      case 'ValidationErrorsDTO':
        return ValidationErrorsDTO.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',);
}