Wie kann ich zulassen, dass der JSON-Serialisierer die Aufzählung einer Klasse ignoriert und sie als Objekt serialisiert und nur ihre Eigenschaften auflistet?
Hier ist ein Beispiel für mein Problem:
Code: Select all
public class ObjectList : IEnumerable where T : class
{
public ObjectList()
{
this.Items = new List();
}
public string Group { get; set; }
public int Count { get => this.Items.Count; set { } }
public List Items { get; set; }
public IEnumerator GetEnumerator() { return this.Items.GetEnumerator(); }
IEnumerator IEnumerable.GetEnumerator() { return this.Items.GetEnumerator(); }
}
public class ItemList : ObjectList
{
}
Es wird folgender Inhalt vorausgesetzt:
Code: Select all
var list = new ItemList()
{
Group = "Group",
Items = new List()
{
new ListItem() { Name = "Foo"},
new ListItem() { Name = "Bar"},
}
};
Wenn ich jetzt den Inhalt mit diesem Code serialisiere:
Code: Select all
var txt = System.Text.Json.JsonSerializer.Serialize(list, new JsonSerializerOptions()
{ WriteIndented = true, });
Console.WriteLine(txt);
Ich erhalte die folgende Ausgabe
Code: Select all
[ { "Name": "Foo" }, { "Name": "Bar" } ]
Die Eigenschaften des Listenobjekts (
) werden nicht aufgeführt. Das Ergebnis würde meiner Meinung nach wie folgt aussehen:
Code: Select all
{
"Group": "Group",
"Count": 2,
"Items": [ { "Name": "Foo" }, { "Name": "Bar" } ]
}
Das Entfernen der Enumeration aus der Hauptklasse ist keine Option. Daher muss ich dem Serialisierer mitteilen, dass er die Klasse ItemList als Objekt und nicht als Aufzählung behandeln soll.
Können Sie mir in diesem Punkt helfen?
Vielen Dank im Voraus.
Wie kann ich zulassen, dass der JSON-Serialisierer die Aufzählung einer Klasse ignoriert und sie als Objekt serialisiert und nur ihre Eigenschaften auflistet?
Hier ist ein Beispiel für mein Problem:
[code]public class ObjectList : IEnumerable where T : class
{
public ObjectList()
{
this.Items = new List();
}
public string Group { get; set; }
public int Count { get => this.Items.Count; set { } }
public List Items { get; set; }
public IEnumerator GetEnumerator() { return this.Items.GetEnumerator(); }
IEnumerator IEnumerable.GetEnumerator() { return this.Items.GetEnumerator(); }
}
public class ItemList : ObjectList
{
}
[/code]
Es wird folgender Inhalt vorausgesetzt:
[code]var list = new ItemList()
{
Group = "Group",
Items = new List()
{
new ListItem() { Name = "Foo"},
new ListItem() { Name = "Bar"},
}
};
[/code]
Wenn ich jetzt den Inhalt mit diesem Code serialisiere:
[code]var txt = System.Text.Json.JsonSerializer.Serialize(list, new JsonSerializerOptions()
{ WriteIndented = true, });
Console.WriteLine(txt);
[/code]
Ich erhalte die folgende Ausgabe
[code][ { "Name": "Foo" }, { "Name": "Bar" } ]
[/code]
Die Eigenschaften des Listenobjekts ([code]Group, Count, Items[/code]) werden nicht aufgeführt. Das Ergebnis würde meiner Meinung nach wie folgt aussehen:
[code]{
"Group": "Group",
"Count": 2,
"Items": [ { "Name": "Foo" }, { "Name": "Bar" } ]
}
[/code]
Das Entfernen der Enumeration aus der Hauptklasse ist keine Option. Daher muss ich dem Serialisierer mitteilen, dass er die Klasse ItemList als Objekt und nicht als Aufzählung behandeln soll.
Können Sie mir in diesem Punkt helfen?
Vielen Dank im Voraus.