Serialisieren Sie die Liste mit Eigenschaften mithilfe von .NET System.Text.JsonC#

Ein Treffpunkt für C#-Programmierer
Guest
 Serialisieren Sie die Liste mit Eigenschaften mithilfe von .NET System.Text.Json

Post by Guest »

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 (

Code: Select all

Group, Count, Items
) 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.

Quick Reply

Change Text Case: 
   
  • Similar Topics
    Replies
    Views
    Last post