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 'Consent':
        return Consent.fromJson(value);
      case 'ConsentRequest':
        return ConsentRequest.fromJson(value);
      case 'ConsentRequiredResponse':
        return ConsentRequiredResponse.fromJson(value);
      case 'ConsentRequiredResponseClient':
        return ConsentRequiredResponseClient.fromJson(value);
      case 'ConsentResponse':
        return ConsentResponse.fromJson(value);
      case 'ErrorResponse':
        return ErrorResponse.fromJson(value);
      case 'ErrorResponseDetailsInner':
        return ErrorResponseDetailsInner.fromJson(value);
      case 'ForgotPasswordRequest':
        return ForgotPasswordRequest.fromJson(value);
      case 'GetHealth200Response':
        return GetHealth200Response.fromJson(value);
      case 'IntrospectionResponse':
        return IntrospectionResponse.fromJson(value);
      case 'JWKS':
        return JWKS.fromJson(value);
      case 'JWKSKeysInner':
        return JWKSKeysInner.fromJson(value);
      case 'ListConsents200Response':
        return ListConsents200Response.fromJson(value);
      case 'ListPasskeys200Response':
        return ListPasskeys200Response.fromJson(value);
      case 'LoginRequest':
        return LoginRequest.fromJson(value);
      case 'LogoutRequest':
        return LogoutRequest.fromJson(value);
      case 'MessageResponse':
        return MessageResponse.fromJson(value);
      case 'OAuthErrorResponse':
        return OAuthErrorResponse.fromJson(value);
      case 'OAuthTokenResponse':
        return OAuthTokenResponse.fromJson(value);
      case 'OIDCDiscoveryDocument':
        return OIDCDiscoveryDocument.fromJson(value);
      case 'Passkey':
        return Passkey.fromJson(value);
      case 'PasskeyLoginBeginRequest':
        return PasskeyLoginBeginRequest.fromJson(value);
      case 'PasskeyLoginBeginResponse':
        return PasskeyLoginBeginResponse.fromJson(value);
      case 'PasskeyLoginFinishRequest':
        return PasskeyLoginFinishRequest.fromJson(value);
      case 'PasskeyRegistrationBeginResponse':
        return PasskeyRegistrationBeginResponse.fromJson(value);
      case 'PasskeyRegistrationFinishRequest':
        return PasskeyRegistrationFinishRequest.fromJson(value);
      case 'PasskeyRenameRequest':
        return PasskeyRenameRequest.fromJson(value);
      case 'ProductUsage':
        return ProductUsage.fromJson(value);
      case 'RefreshRequest':
        return RefreshRequest.fromJson(value);
      case 'RegisterRequest':
        return RegisterRequest.fromJson(value);
      case 'ResetPasswordRequest':
        return ResetPasswordRequest.fromJson(value);
      case 'RevokeConsentRequest':
        return RevokeConsentRequest.fromJson(value);
      case 'SubscriptionSummary':
        return SubscriptionSummary.fromJson(value);
      case 'TokenResponse':
        return TokenResponse.fromJson(value);
      case 'TwoFactorConfirmRequest':
        return TwoFactorConfirmRequest.fromJson(value);
      case 'TwoFactorConfirmResponse':
        return TwoFactorConfirmResponse.fromJson(value);
      case 'TwoFactorDisableRequest':
        return TwoFactorDisableRequest.fromJson(value);
      case 'TwoFactorEmailCodeRequest':
        return TwoFactorEmailCodeRequest.fromJson(value);
      case 'TwoFactorLoginRequest':
        return TwoFactorLoginRequest.fromJson(value);
      case 'TwoFactorSetupResponse':
        return TwoFactorSetupResponse.fromJson(value);
      case 'TwoFactorStatusResponse':
        return TwoFactorStatusResponse.fromJson(value);
      case 'UserAnalyticsResponse':
        return UserAnalyticsResponse.fromJson(value);
      case 'UserInfoResponse':
        return UserInfoResponse.fromJson(value);
      case 'UserResponse':
        return UserResponse.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',);
}