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