internal static MetricSpecification DeserializeMetricSpecification(JsonElement element) { Optional <string> name = default; Optional <string> displayName = default; Optional <string> displayDescription = default; Optional <string> unit = default; Optional <string> aggregationType = default; Optional <IReadOnlyList <Availability> > availabilities = default; Optional <bool> enableRegionalMdmAccount = default; Optional <bool> fillGapWithZero = default; Optional <string> metricFilterPattern = default; Optional <IReadOnlyList <Dimension> > dimensions = default; Optional <bool> isInternal = default; Optional <string> sourceMdmAccount = default; Optional <string> sourceMdmNamespace = default; Optional <string> resourceIdDimensionNameOverride = default; foreach (var property in element.EnumerateObject()) { if (property.NameEquals("name")) { name = property.Value.GetString(); continue; } if (property.NameEquals("displayName")) { displayName = property.Value.GetString(); continue; } if (property.NameEquals("displayDescription")) { displayDescription = property.Value.GetString(); continue; } if (property.NameEquals("unit")) { unit = property.Value.GetString(); continue; } if (property.NameEquals("aggregationType")) { aggregationType = property.Value.GetString(); continue; } if (property.NameEquals("availabilities")) { List <Availability> array = new List <Availability>(); foreach (var item in property.Value.EnumerateArray()) { array.Add(Availability.DeserializeAvailability(item)); } availabilities = array; continue; } if (property.NameEquals("enableRegionalMdmAccount")) { enableRegionalMdmAccount = property.Value.GetBoolean(); continue; } if (property.NameEquals("fillGapWithZero")) { fillGapWithZero = property.Value.GetBoolean(); continue; } if (property.NameEquals("metricFilterPattern")) { metricFilterPattern = property.Value.GetString(); continue; } if (property.NameEquals("dimensions")) { List <Dimension> array = new List <Dimension>(); foreach (var item in property.Value.EnumerateArray()) { array.Add(Dimension.DeserializeDimension(item)); } dimensions = array; continue; } if (property.NameEquals("isInternal")) { isInternal = property.Value.GetBoolean(); continue; } if (property.NameEquals("sourceMdmAccount")) { sourceMdmAccount = property.Value.GetString(); continue; } if (property.NameEquals("sourceMdmNamespace")) { sourceMdmNamespace = property.Value.GetString(); continue; } if (property.NameEquals("resourceIdDimensionNameOverride")) { resourceIdDimensionNameOverride = property.Value.GetString(); continue; } } return(new MetricSpecification(name.Value, displayName.Value, displayDescription.Value, unit.Value, aggregationType.Value, Optional.ToList(availabilities), Optional.ToNullable(enableRegionalMdmAccount), Optional.ToNullable(fillGapWithZero), metricFilterPattern.Value, Optional.ToList(dimensions), Optional.ToNullable(isInternal), sourceMdmAccount.Value, sourceMdmNamespace.Value, resourceIdDimensionNameOverride.Value)); }