internal static MetricAlertSingleResourceMultipleMetricCriteria DeserializeMetricAlertSingleResourceMultipleMetricCriteria(JsonElement element) { Optional <IList <MetricCriteria> > allOf = default; Odatatype odataType = default; IDictionary <string, BinaryData> additionalProperties = default; Dictionary <string, BinaryData> additionalPropertiesDictionary = new Dictionary <string, BinaryData>(); foreach (var property in element.EnumerateObject()) { if (property.NameEquals("allOf")) { if (property.Value.ValueKind == JsonValueKind.Null) { property.ThrowNonNullablePropertyIsNull(); continue; } List <MetricCriteria> array = new List <MetricCriteria>(); foreach (var item in property.Value.EnumerateArray()) { array.Add(MetricCriteria.DeserializeMetricCriteria(item)); } allOf = array; continue; } if (property.NameEquals("odata.type")) { odataType = new Odatatype(property.Value.GetString()); continue; } additionalPropertiesDictionary.Add(property.Name, BinaryData.FromString(property.Value.GetRawText())); } additionalProperties = additionalPropertiesDictionary; return(new MetricAlertSingleResourceMultipleMetricCriteria(odataType, additionalProperties, Optional.ToList(allOf))); }
internal static MultiMetricCriteria DeserializeMultiMetricCriteria(JsonElement element) { if (element.TryGetProperty("criterionType", out JsonElement discriminator)) { switch (discriminator.GetString()) { case "DynamicThresholdCriterion": return(DynamicMetricCriteria.DeserializeDynamicMetricCriteria(element)); case "StaticThresholdCriterion": return(MetricCriteria.DeserializeMetricCriteria(element)); } } CriterionType criterionType = default; string name = default; string metricName = default; Optional <string> metricNamespace = default; AggregationTypeEnum timeAggregation = default; Optional <IList <MetricDimension> > dimensions = default; Optional <bool> skipMetricValidation = default; IDictionary <string, BinaryData> additionalProperties = default; Dictionary <string, BinaryData> additionalPropertiesDictionary = new Dictionary <string, BinaryData>(); foreach (var property in element.EnumerateObject()) { if (property.NameEquals("criterionType")) { criterionType = new CriterionType(property.Value.GetString()); continue; } if (property.NameEquals("name")) { name = property.Value.GetString(); continue; } if (property.NameEquals("metricName")) { metricName = property.Value.GetString(); continue; } if (property.NameEquals("metricNamespace")) { metricNamespace = property.Value.GetString(); continue; } if (property.NameEquals("timeAggregation")) { timeAggregation = new AggregationTypeEnum(property.Value.GetString()); continue; } if (property.NameEquals("dimensions")) { if (property.Value.ValueKind == JsonValueKind.Null) { property.ThrowNonNullablePropertyIsNull(); continue; } List <MetricDimension> array = new List <MetricDimension>(); foreach (var item in property.Value.EnumerateArray()) { array.Add(MetricDimension.DeserializeMetricDimension(item)); } dimensions = array; continue; } if (property.NameEquals("skipMetricValidation")) { if (property.Value.ValueKind == JsonValueKind.Null) { property.ThrowNonNullablePropertyIsNull(); continue; } skipMetricValidation = property.Value.GetBoolean(); continue; } additionalPropertiesDictionary.Add(property.Name, BinaryData.FromString(property.Value.GetRawText())); } additionalProperties = additionalPropertiesDictionary; return(new MultiMetricCriteria(criterionType, name, metricName, metricNamespace.Value, timeAggregation, Optional.ToList(dimensions), Optional.ToNullable(skipMetricValidation), additionalProperties)); }