Serialisieren Sie die Liste mit Eigenschaften mithilfe von .NET System.Text.Json
Posted: 27 Dec 2024, 06:49
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:
Es wird folgender Inhalt vorausgesetzt:
Wenn ich jetzt den Inhalt mit diesem Code serialisiere:
Ich erhalte die folgende Ausgabe
Die Eigenschaften des Listenobjekts () werden nicht aufgeführt. Das Ergebnis würde meiner Meinung nach wie folgt aussehen:
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.
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
{
}
Code: Select all
var list = new ItemList()
{
Group = "Group",
Items = new List()
{
new ListItem() { Name = "Foo"},
new ListItem() { Name = "Bar"},
}
};
Code: Select all
var txt = System.Text.Json.JsonSerializer.Serialize(list, new JsonSerializerOptions()
{ WriteIndented = true, });
Console.WriteLine(txt);
Code: Select all
[ { "Name": "Foo" }, { "Name": "Bar" } ]
Code: Select all
Group, Count, Items
Code: Select all
{
"Group": "Group",
"Count": 2,
"Items": [ { "Name": "Foo" }, { "Name": "Bar" } ]
}
Können Sie mir in diesem Punkt helfen?
Vielen Dank im Voraus.