internal static MetricSpecification DeserializeMetricSpecification(JsonElement element) { Optional <string> name = default; Optional <string> displayName = default; Optional <string> displayDescription = default; Optional <string> unit = default; Optional <IReadOnlyList <Dimension> > dimensions = default; Optional <string> aggregationType = default; Optional <bool> fillGapWithZero = default; Optional <string> category = 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("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("aggregationType")) { aggregationType = property.Value.GetString(); continue; } if (property.NameEquals("fillGapWithZero")) { fillGapWithZero = property.Value.GetBoolean(); continue; } if (property.NameEquals("category")) { category = property.Value.GetString(); continue; } if (property.NameEquals("resourceIdDimensionNameOverride")) { resourceIdDimensionNameOverride = property.Value.GetString(); continue; } } return(new MetricSpecification(name.Value, displayName.Value, displayDescription.Value, unit.Value, Optional.ToList(dimensions), aggregationType.Value, Optional.ToNullable(fillGapWithZero), category.Value, resourceIdDimensionNameOverride.Value)); }