internal static DatabaseAccountData DeserializeDatabaseAccountData(JsonElement element) { Optional <DatabaseAccountKind> kind = default; Optional <ManagedServiceIdentity> identity = default; IDictionary <string, string> tags = default; AzureLocation location = default; ResourceIdentifier id = default; string name = default; ResourceType type = default; SystemData systemData = default; Optional <string> provisioningState = default; Optional <string> documentEndpoint = default; Optional <string> databaseAccountOfferType = default; Optional <IList <IPAddressOrRange> > ipRules = default; Optional <bool> isVirtualNetworkFilterEnabled = default; Optional <bool> enableAutomaticFailover = default; Optional <ConsistencyPolicy> consistencyPolicy = default; Optional <IList <DatabaseAccountCapability> > capabilities = default; Optional <IReadOnlyList <DatabaseAccountLocation> > writeLocations = default; Optional <IReadOnlyList <DatabaseAccountLocation> > readLocations = default; Optional <IReadOnlyList <DatabaseAccountLocation> > locations = default; Optional <IReadOnlyList <FailoverPolicy> > failoverPolicies = default; Optional <IList <VirtualNetworkRule> > virtualNetworkRules = default; Optional <IReadOnlyList <PrivateEndpointConnectionData> > privateEndpointConnections = default; Optional <bool> enableMultipleWriteLocations = default; Optional <bool> enableCassandraConnector = default; Optional <ConnectorOffer> connectorOffer = default; Optional <bool> disableKeyBasedMetadataWriteAccess = default; Optional <Uri> keyVaultKeyUri = default; Optional <string> defaultIdentity = default; Optional <PublicNetworkAccess> publicNetworkAccess = default; Optional <bool> enableFreeTier = default; Optional <ApiProperties> apiProperties = default; Optional <bool> enableAnalyticalStorage = default; Optional <AnalyticalStorageConfiguration> analyticalStorageConfiguration = default; Optional <string> instanceId = default; Optional <CreateMode> createMode = default; Optional <RestoreParameters> restoreParameters = default; Optional <BackupPolicy> backupPolicy = default; Optional <IList <CorsPolicy> > cors = default; Optional <NetworkAclBypass> networkAclBypass = default; Optional <IList <string> > networkAclBypassResourceIds = default; Optional <bool> disableLocalAuth = default; Optional <Capacity> capacity = default; foreach (var property in element.EnumerateObject()) { if (property.NameEquals("kind")) { if (property.Value.ValueKind == JsonValueKind.Null) { property.ThrowNonNullablePropertyIsNull(); continue; } kind = new DatabaseAccountKind(property.Value.GetString()); continue; } if (property.NameEquals("identity")) { if (property.Value.ValueKind == JsonValueKind.Null) { property.ThrowNonNullablePropertyIsNull(); continue; } var serializeOptions = new JsonSerializerOptions { Converters = { new ManagedServiceIdentityTypeV3Converter() } }; identity = JsonSerializer.Deserialize <ManagedServiceIdentity>(property.Value.ToString(), serializeOptions); continue; } if (property.NameEquals("tags")) { Dictionary <string, string> dictionary = new Dictionary <string, string>(); foreach (var property0 in property.Value.EnumerateObject()) { dictionary.Add(property0.Name, property0.Value.GetString()); } tags = dictionary; continue; } if (property.NameEquals("location")) { location = property.Value.GetString(); continue; } if (property.NameEquals("id")) { id = new ResourceIdentifier(property.Value.GetString()); continue; } if (property.NameEquals("name")) { name = property.Value.GetString(); continue; } if (property.NameEquals("type")) { type = property.Value.GetString(); continue; } if (property.NameEquals("systemData")) { systemData = JsonSerializer.Deserialize <SystemData>(property.Value.ToString()); continue; } if (property.NameEquals("properties")) { if (property.Value.ValueKind == JsonValueKind.Null) { property.ThrowNonNullablePropertyIsNull(); continue; } foreach (var property0 in property.Value.EnumerateObject()) { if (property0.NameEquals("provisioningState")) { provisioningState = property0.Value.GetString(); continue; } if (property0.NameEquals("documentEndpoint")) { documentEndpoint = property0.Value.GetString(); continue; } if (property0.NameEquals("databaseAccountOfferType")) { databaseAccountOfferType = property0.Value.GetString(); continue; } if (property0.NameEquals("ipRules")) { if (property0.Value.ValueKind == JsonValueKind.Null) { property0.ThrowNonNullablePropertyIsNull(); continue; } List <IPAddressOrRange> array = new List <IPAddressOrRange>(); foreach (var item in property0.Value.EnumerateArray()) { array.Add(IPAddressOrRange.DeserializeIPAddressOrRange(item)); } ipRules = array; continue; } if (property0.NameEquals("isVirtualNetworkFilterEnabled")) { if (property0.Value.ValueKind == JsonValueKind.Null) { property0.ThrowNonNullablePropertyIsNull(); continue; } isVirtualNetworkFilterEnabled = property0.Value.GetBoolean(); continue; } if (property0.NameEquals("enableAutomaticFailover")) { if (property0.Value.ValueKind == JsonValueKind.Null) { property0.ThrowNonNullablePropertyIsNull(); continue; } enableAutomaticFailover = property0.Value.GetBoolean(); continue; } if (property0.NameEquals("consistencyPolicy")) { if (property0.Value.ValueKind == JsonValueKind.Null) { property0.ThrowNonNullablePropertyIsNull(); continue; } consistencyPolicy = ConsistencyPolicy.DeserializeConsistencyPolicy(property0.Value); continue; } if (property0.NameEquals("capabilities")) { if (property0.Value.ValueKind == JsonValueKind.Null) { property0.ThrowNonNullablePropertyIsNull(); continue; } List <DatabaseAccountCapability> array = new List <DatabaseAccountCapability>(); foreach (var item in property0.Value.EnumerateArray()) { array.Add(DatabaseAccountCapability.DeserializeDatabaseAccountCapability(item)); } capabilities = array; continue; } if (property0.NameEquals("writeLocations")) { if (property0.Value.ValueKind == JsonValueKind.Null) { property0.ThrowNonNullablePropertyIsNull(); continue; } List <DatabaseAccountLocation> array = new List <DatabaseAccountLocation>(); foreach (var item in property0.Value.EnumerateArray()) { array.Add(DatabaseAccountLocation.DeserializeDatabaseAccountLocation(item)); } writeLocations = array; continue; } if (property0.NameEquals("readLocations")) { if (property0.Value.ValueKind == JsonValueKind.Null) { property0.ThrowNonNullablePropertyIsNull(); continue; } List <DatabaseAccountLocation> array = new List <DatabaseAccountLocation>(); foreach (var item in property0.Value.EnumerateArray()) { array.Add(DatabaseAccountLocation.DeserializeDatabaseAccountLocation(item)); } readLocations = array; continue; } if (property0.NameEquals("locations")) { if (property0.Value.ValueKind == JsonValueKind.Null) { property0.ThrowNonNullablePropertyIsNull(); continue; } List <DatabaseAccountLocation> array = new List <DatabaseAccountLocation>(); foreach (var item in property0.Value.EnumerateArray()) { array.Add(DatabaseAccountLocation.DeserializeDatabaseAccountLocation(item)); } locations = array; continue; } if (property0.NameEquals("failoverPolicies")) { if (property0.Value.ValueKind == JsonValueKind.Null) { property0.ThrowNonNullablePropertyIsNull(); continue; } List <FailoverPolicy> array = new List <FailoverPolicy>(); foreach (var item in property0.Value.EnumerateArray()) { array.Add(FailoverPolicy.DeserializeFailoverPolicy(item)); } failoverPolicies = array; continue; } if (property0.NameEquals("virtualNetworkRules")) { if (property0.Value.ValueKind == JsonValueKind.Null) { property0.ThrowNonNullablePropertyIsNull(); continue; } List <VirtualNetworkRule> array = new List <VirtualNetworkRule>(); foreach (var item in property0.Value.EnumerateArray()) { array.Add(VirtualNetworkRule.DeserializeVirtualNetworkRule(item)); } virtualNetworkRules = array; continue; } if (property0.NameEquals("privateEndpointConnections")) { if (property0.Value.ValueKind == JsonValueKind.Null) { property0.ThrowNonNullablePropertyIsNull(); continue; } List <PrivateEndpointConnectionData> array = new List <PrivateEndpointConnectionData>(); foreach (var item in property0.Value.EnumerateArray()) { array.Add(PrivateEndpointConnectionData.DeserializePrivateEndpointConnectionData(item)); } privateEndpointConnections = array; continue; } if (property0.NameEquals("enableMultipleWriteLocations")) { if (property0.Value.ValueKind == JsonValueKind.Null) { property0.ThrowNonNullablePropertyIsNull(); continue; } enableMultipleWriteLocations = property0.Value.GetBoolean(); continue; } if (property0.NameEquals("enableCassandraConnector")) { if (property0.Value.ValueKind == JsonValueKind.Null) { property0.ThrowNonNullablePropertyIsNull(); continue; } enableCassandraConnector = property0.Value.GetBoolean(); continue; } if (property0.NameEquals("connectorOffer")) { if (property0.Value.ValueKind == JsonValueKind.Null) { property0.ThrowNonNullablePropertyIsNull(); continue; } connectorOffer = new ConnectorOffer(property0.Value.GetString()); continue; } if (property0.NameEquals("disableKeyBasedMetadataWriteAccess")) { if (property0.Value.ValueKind == JsonValueKind.Null) { property0.ThrowNonNullablePropertyIsNull(); continue; } disableKeyBasedMetadataWriteAccess = property0.Value.GetBoolean(); continue; } if (property0.NameEquals("keyVaultKeyUri")) { if (property0.Value.ValueKind == JsonValueKind.Null) { keyVaultKeyUri = null; continue; } keyVaultKeyUri = new Uri(property0.Value.GetString()); continue; } if (property0.NameEquals("defaultIdentity")) { defaultIdentity = property0.Value.GetString(); continue; } if (property0.NameEquals("publicNetworkAccess")) { if (property0.Value.ValueKind == JsonValueKind.Null) { property0.ThrowNonNullablePropertyIsNull(); continue; } publicNetworkAccess = new PublicNetworkAccess(property0.Value.GetString()); continue; } if (property0.NameEquals("enableFreeTier")) { if (property0.Value.ValueKind == JsonValueKind.Null) { property0.ThrowNonNullablePropertyIsNull(); continue; } enableFreeTier = property0.Value.GetBoolean(); continue; } if (property0.NameEquals("apiProperties")) { if (property0.Value.ValueKind == JsonValueKind.Null) { property0.ThrowNonNullablePropertyIsNull(); continue; } apiProperties = ApiProperties.DeserializeApiProperties(property0.Value); continue; } if (property0.NameEquals("enableAnalyticalStorage")) { if (property0.Value.ValueKind == JsonValueKind.Null) { property0.ThrowNonNullablePropertyIsNull(); continue; } enableAnalyticalStorage = property0.Value.GetBoolean(); continue; } if (property0.NameEquals("analyticalStorageConfiguration")) { if (property0.Value.ValueKind == JsonValueKind.Null) { property0.ThrowNonNullablePropertyIsNull(); continue; } analyticalStorageConfiguration = AnalyticalStorageConfiguration.DeserializeAnalyticalStorageConfiguration(property0.Value); continue; } if (property0.NameEquals("instanceId")) { instanceId = property0.Value.GetString(); continue; } if (property0.NameEquals("createMode")) { if (property0.Value.ValueKind == JsonValueKind.Null) { property0.ThrowNonNullablePropertyIsNull(); continue; } createMode = new CreateMode(property0.Value.GetString()); continue; } if (property0.NameEquals("restoreParameters")) { if (property0.Value.ValueKind == JsonValueKind.Null) { property0.ThrowNonNullablePropertyIsNull(); continue; } restoreParameters = RestoreParameters.DeserializeRestoreParameters(property0.Value); continue; } if (property0.NameEquals("backupPolicy")) { if (property0.Value.ValueKind == JsonValueKind.Null) { property0.ThrowNonNullablePropertyIsNull(); continue; } backupPolicy = BackupPolicy.DeserializeBackupPolicy(property0.Value); continue; } if (property0.NameEquals("cors")) { if (property0.Value.ValueKind == JsonValueKind.Null) { property0.ThrowNonNullablePropertyIsNull(); continue; } List <CorsPolicy> array = new List <CorsPolicy>(); foreach (var item in property0.Value.EnumerateArray()) { array.Add(CorsPolicy.DeserializeCorsPolicy(item)); } cors = array; continue; } if (property0.NameEquals("networkAclBypass")) { if (property0.Value.ValueKind == JsonValueKind.Null) { property0.ThrowNonNullablePropertyIsNull(); continue; } networkAclBypass = property0.Value.GetString().ToNetworkAclBypass(); continue; } if (property0.NameEquals("networkAclBypassResourceIds")) { if (property0.Value.ValueKind == JsonValueKind.Null) { property0.ThrowNonNullablePropertyIsNull(); continue; } List <string> array = new List <string>(); foreach (var item in property0.Value.EnumerateArray()) { array.Add(item.GetString()); } networkAclBypassResourceIds = array; continue; } if (property0.NameEquals("disableLocalAuth")) { if (property0.Value.ValueKind == JsonValueKind.Null) { property0.ThrowNonNullablePropertyIsNull(); continue; } disableLocalAuth = property0.Value.GetBoolean(); continue; } if (property0.NameEquals("capacity")) { if (property0.Value.ValueKind == JsonValueKind.Null) { property0.ThrowNonNullablePropertyIsNull(); continue; } capacity = Capacity.DeserializeCapacity(property0.Value); continue; } } continue; } } return(new DatabaseAccountData(id, name, type, systemData, tags, location, Optional.ToNullable(kind), identity, provisioningState.Value, documentEndpoint.Value, databaseAccountOfferType.Value, Optional.ToList(ipRules), Optional.ToNullable(isVirtualNetworkFilterEnabled), Optional.ToNullable(enableAutomaticFailover), consistencyPolicy.Value, Optional.ToList(capabilities), Optional.ToList(writeLocations), Optional.ToList(readLocations), Optional.ToList(locations), Optional.ToList(failoverPolicies), Optional.ToList(virtualNetworkRules), Optional.ToList(privateEndpointConnections), Optional.ToNullable(enableMultipleWriteLocations), Optional.ToNullable(enableCassandraConnector), Optional.ToNullable(connectorOffer), Optional.ToNullable(disableKeyBasedMetadataWriteAccess), keyVaultKeyUri.Value, defaultIdentity.Value, Optional.ToNullable(publicNetworkAccess), Optional.ToNullable(enableFreeTier), apiProperties.Value, Optional.ToNullable(enableAnalyticalStorage), analyticalStorageConfiguration.Value, instanceId.Value, Optional.ToNullable(createMode), restoreParameters.Value, backupPolicy.Value, Optional.ToList(cors), Optional.ToNullable(networkAclBypass), Optional.ToList(networkAclBypassResourceIds), Optional.ToNullable(disableLocalAuth), capacity.Value)); }