First off, I had a hard time with the title of this one; I'll edit it if I get any better suggestions.
I have a json string that looks like this
{
"chapters": [
{
"id": 0,
"tags": {
"title": "Chapter 1"
}
},
{
"id": 1,
"tags": {
"title": "Chapter 2"
}
}
]
}
My model for this is as such
public class Chapter
{
[JsonPropertyName("id")]
public int Id { get; set; }
[JsonPropertyName("tags")]
public ChapterTags Tags { get; set; }
[JsonIgnore]
public string Title
{
get { return Tags.Title; }
set { if (Tags.Title != value) Tags.Title = value; }
}
}
public class ChapterTags
{
[JsonPropertyName("title")]
public string Title { get; set; }
}
and here is the code I'm using to deserialize the json
var jsonTask = GetJsonAsync();
using var jsonResults = JsonDocument.Parse(await jsonTask);
var jsonChapters = jsonResults.RootElement.GetProperty("chapters");
List<Chapter> chapters = JsonSerializer.Deserialize<List<Chapter>>(jsonChapters) ?? new();
I want to get rid of the Tags
property and the ChapterTags
class and just be left with
public class Chapter
{
[JsonPropertyName("id")]
public int Id { get; set; }
public string Title {get; set;}
}
as a simple single class model.
My only thought was to use a JsonConverter but could not figure out how to make that work. I can't change the format of the json input because it is being generated by an outside source.
Also, if it matters, I will never have to re-serialize the object back to json.
I am using VS2022 Preview, as that is currently the only way to work with .Net Maui.