internal static ClassItem DeserializeClassItem(XElement element) { int? accountGroup = default; string accountNumber = default; ClassItemType? classItemType = default; string description = default; string descriptionPrefix = default; bool? enabled = default; string name = default; IReadOnlyList <ClassItem> subItems = default; if (element.Element("accountGroup") is XElement accountGroupElement) { accountGroup = (int?)accountGroupElement; } if (element.Element("accountNumber") is XElement accountNumberElement) { accountNumber = (string)accountNumberElement; } if (element.Element("classItemType") is XElement classItemTypeElement) { classItemType = new ClassItemType(classItemTypeElement.Value); } if (element.Element("description") is XElement descriptionElement) { description = (string)descriptionElement; } if (element.Element("descriptionPrefix") is XElement descriptionPrefixElement) { descriptionPrefix = (string)descriptionPrefixElement; } if (element.Element("enabled") is XElement enabledElement) { enabled = (bool?)enabledElement; } if (element.Element("name") is XElement nameElement) { name = (string)nameElement; } var array = new List <ClassItem>(); foreach (var e in element.Elements("ClassItem")) { array.Add(DeserializeClassItem(e)); } subItems = array; return(new ClassItem(accountGroup, accountNumber, classItemType, description, descriptionPrefix, enabled, name, subItems)); }
internal static ClassItem DeserializeClassItem(JsonElement element) { Optional <int> accountGroup = default; Optional <string> accountNumber = default; Optional <ClassItemType> classItemType = default; Optional <string> description = default; Optional <string> descriptionPrefix = default; Optional <bool> enabled = default; Optional <string> name = default; Optional <IReadOnlyList <ClassItem> > subItems = default; foreach (var property in element.EnumerateObject()) { if (property.NameEquals("accountGroup")) { if (property.Value.ValueKind == JsonValueKind.Null) { property.ThrowNonNullablePropertyIsNull(); continue; } accountGroup = property.Value.GetInt32(); continue; } if (property.NameEquals("accountNumber")) { accountNumber = property.Value.GetString(); continue; } if (property.NameEquals("classItemType")) { if (property.Value.ValueKind == JsonValueKind.Null) { property.ThrowNonNullablePropertyIsNull(); continue; } classItemType = new ClassItemType(property.Value.GetString()); continue; } if (property.NameEquals("description")) { description = property.Value.GetString(); continue; } if (property.NameEquals("descriptionPrefix")) { descriptionPrefix = property.Value.GetString(); continue; } if (property.NameEquals("enabled")) { if (property.Value.ValueKind == JsonValueKind.Null) { property.ThrowNonNullablePropertyIsNull(); continue; } enabled = property.Value.GetBoolean(); continue; } if (property.NameEquals("name")) { name = property.Value.GetString(); continue; } if (property.NameEquals("subItems")) { if (property.Value.ValueKind == JsonValueKind.Null) { property.ThrowNonNullablePropertyIsNull(); continue; } List <ClassItem> array = new List <ClassItem>(); foreach (var item in property.Value.EnumerateArray()) { array.Add(DeserializeClassItem(item)); } subItems = array; continue; } } return(new ClassItem(Optional.ToNullable(accountGroup), accountNumber.Value, Optional.ToNullable(classItemType), description.Value, descriptionPrefix.Value, Optional.ToNullable(enabled), name.Value, Optional.ToList(subItems))); }