public static SearchPage Parse(string jsonIn) { var page = new SearchPage(); page.Results = new List <object>(); var obj = JsonDocument.Parse(jsonIn).RootElement; foreach (var item in obj.EnumerateObject()) { switch (item.Name) { case "pagination": page.Pagination = Paging.Create(item.Value); break; default: foreach (var releaseObj in item.Value.EnumerateArray()) { foreach (var releaseItem in releaseObj.EnumerateObject()) { switch (releaseItem.Name) { case "release": page.Results.Add(ReleaseStub.Parse(releaseObj)); break; case "master": page.Results.Add(MasterStub.Parse(releaseObj)); break; case "artist": page.Results.Add(ArtistStub.Parse(releaseObj)); break; case "label": page.Results.Add(LabelStub.Parse(releaseObj)); break; default: throw new Exception(String.Format("Unknown Object Type when parsing Artist Releases page: {0}", releaseItem.Name)); } } } break; } } return(page); }