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 'AddPolicyRule201Response':
        return AddPolicyRule201Response.fromJson(value);
      case 'AddSuppressionRequest':
        return AddSuppressionRequest.fromJson(value);
      case 'AddSuppressionRequestEntriesInner':
        return AddSuppressionRequestEntriesInner.fromJson(value);
      case 'AddSuppressionResponse':
        return AddSuppressionResponse.fromJson(value);
      case 'CheckSuppressionRequest':
        return CheckSuppressionRequest.fromJson(value);
      case 'CreateJobFromS3Request':
        return CreateJobFromS3Request.fromJson(value);
      case 'CreateJobRequest':
        return CreateJobRequest.fromJson(value);
      case 'CreatePolicyFromPresetRequest':
        return CreatePolicyFromPresetRequest.fromJson(value);
      case 'CreatePolicyRequest':
        return CreatePolicyRequest.fromJson(value);
      case 'DeleteJob200Response':
        return DeleteJob200Response.fromJson(value);
      case 'DeletePolicy200Response':
        return DeletePolicy200Response.fromJson(value);
      case 'DeletePolicyRule200Response':
        return DeletePolicyRule200Response.fromJson(value);
      case 'ErrorResponse':
        return ErrorResponse.fromJson(value);
      case 'GetPresignedUploadRequest':
        return GetPresignedUploadRequest.fromJson(value);
      case 'HealthCheck200Response':
        return HealthCheck200Response.fromJson(value);
      case 'Job':
        return Job.fromJson(value);
      case 'JobListResponse':
        return JobListResponse.fromJson(value);
      case 'JobResponse':
        return JobResponse.fromJson(value);
      case 'JobSummary':
        return JobSummary.fromJson(value);
      case 'Pagination':
        return Pagination.fromJson(value);
      case 'Policy':
        return Policy.fromJson(value);
      case 'PolicyListResponse':
        return PolicyListResponse.fromJson(value);
      case 'PolicyListResponseLimits':
        return PolicyListResponseLimits.fromJson(value);
      case 'PolicyPresetsResponse':
        return PolicyPresetsResponse.fromJson(value);
      case 'PolicyPresetsResponsePresetsInner':
        return PolicyPresetsResponsePresetsInner.fromJson(value);
      case 'PolicyResponse':
        return PolicyResponse.fromJson(value);
      case 'PolicyRule':
        return PolicyRule.fromJson(value);
      case 'PolicyRuleAction':
        return PolicyRuleAction.fromJson(value);
      case 'PolicyTestResponse':
        return PolicyTestResponse.fromJson(value);
      case 'PresignedUploadResponse':
        return PresignedUploadResponse.fromJson(value);
      case 'PresignedUploadResponseUpload':
        return PresignedUploadResponseUpload.fromJson(value);
      case 'RemoveSuppression200Response':
        return RemoveSuppression200Response.fromJson(value);
      case 'RemoveSuppressionRequest':
        return RemoveSuppressionRequest.fromJson(value);
      case 'ResultsResponse':
        return ResultsResponse.fromJson(value);
      case 'SuppressionCheckResponse':
        return SuppressionCheckResponse.fromJson(value);
      case 'SuppressionEntry':
        return SuppressionEntry.fromJson(value);
      case 'SuppressionListResponse':
        return SuppressionListResponse.fromJson(value);
      case 'SuppressionStatsResponse':
        return SuppressionStatsResponse.fromJson(value);
      case 'SuppressionStatsResponseByType':
        return SuppressionStatsResponseByType.fromJson(value);
      case 'TelemetrySummary':
        return TelemetrySummary.fromJson(value);
      case 'TelemetrySummaryRates':
        return TelemetrySummaryRates.fromJson(value);
      case 'TelemetrySummaryTopDomainsInner':
        return TelemetrySummaryTopDomainsInner.fromJson(value);
      case 'TelemetrySummaryTopReasonsInner':
        return TelemetrySummaryTopReasonsInner.fromJson(value);
      case 'TelemetrySummaryTotals':
        return TelemetrySummaryTotals.fromJson(value);
      case 'TestPolicyRequest':
        return TestPolicyRequest.fromJson(value);
      case 'TestPolicyRequestTestResult':
        return TestPolicyRequestTestResult.fromJson(value);
      case 'UpdatePolicyRequest':
        return UpdatePolicyRequest.fromJson(value);
      case 'ValidateRequest':
        return ValidateRequest.fromJson(value);
      case 'ValidationResponse':
        return ValidationResponse.fromJson(value);
      case 'ValidationResponseSuppressionMatch':
        return ValidationResponseSuppressionMatch.fromJson(value);
      case 'ValidationResult':
        return ValidationResult.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',);
}