internal static DotFish DeserializeDotFish(JsonElement element) { if (element.TryGetProperty("fish.type", out JsonElement discriminator)) { switch (discriminator.GetString()) { case "DotSalmon": return(DotSalmon.DeserializeDotSalmon(element)); } } string fishType = default; string species = default; foreach (var property in element.EnumerateObject()) { if (property.NameEquals("fish.type")) { fishType = property.Value.GetString(); continue; } if (property.NameEquals("species")) { if (property.Value.ValueKind == JsonValueKind.Null) { continue; } species = property.Value.GetString(); continue; } } return(new DotFish(fishType, species)); }
internal static DotFishMarket DeserializeDotFishMarket(JsonElement element) { DotSalmon sampleSalmon = default; IReadOnlyList <DotSalmon> salmons = default; DotFish sampleFish = default; IReadOnlyList <DotFish> fishes = default; foreach (var property in element.EnumerateObject()) { if (property.NameEquals("sampleSalmon")) { if (property.Value.ValueKind == JsonValueKind.Null) { continue; } sampleSalmon = DotSalmon.DeserializeDotSalmon(property.Value); continue; } if (property.NameEquals("salmons")) { if (property.Value.ValueKind == JsonValueKind.Null) { continue; } List <DotSalmon> array = new List <DotSalmon>(); foreach (var item in property.Value.EnumerateArray()) { if (item.ValueKind == JsonValueKind.Null) { array.Add(null); } else { array.Add(DotSalmon.DeserializeDotSalmon(item)); } } salmons = array; continue; } if (property.NameEquals("sampleFish")) { if (property.Value.ValueKind == JsonValueKind.Null) { continue; } sampleFish = DotFish.DeserializeDotFish(property.Value); continue; } if (property.NameEquals("fishes")) { if (property.Value.ValueKind == JsonValueKind.Null) { continue; } List <DotFish> array = new List <DotFish>(); foreach (var item in property.Value.EnumerateArray()) { if (item.ValueKind == JsonValueKind.Null) { array.Add(null); } else { array.Add(DotFish.DeserializeDotFish(item)); } } fishes = array; continue; } } return(new DotFishMarket(sampleSalmon, salmons, sampleFish, fishes)); }