Angenommen, ich habe diese Berechtigungen mit diesen Beziehungen: Dies ist nur ein fiktives Beispiel, und nicht meine aktuellen Entitäten.Legen Sie eine maximale Tiefe der JSON-Serialisierung in .NET Web API
- Course
- Benutzer
- Neuigkeiten
Kurse haben viele Benutzer haben Benutzer viele Kurse
Kurse viele Neuigkeiten hat, Neuigkeiten hat viele Kurse
Benutzer hat viele NewsPosts, NewsPosts hat viele Benutzer
Ich benutze Entity Framework-Code zuerst mit .NET Web API, die Entitäten in Form von JSON zurücksendet. Wenn ich versuche, einen Kurs zu erhalten, sendet er ein JSON-Ergebnis mit den Relationen der Entitäten zurück, was in Ordnung ist, aber ich möchte ein Limit festlegen, wie viele Ebenen es serialisiert, so dass es nicht alle Relationen über die erste serialisiert oder zweite Ebene.
GET Kurs/würde serialisiert werden:
{
"Users":[{
"id":1,
"newsPosts": [{
"id":1,
"message":"foo"
}]
}],
"newsPosts":[{
"id":2,
"message":"bar"
}]
}
Was ich möchte ist nur 1 oder vielleicht 2 Ebenen serialisiert werden, so dass das Ergebnis wäre:
{
"Users":[{
"id":1,
"newsPosts": []
}],
"newsPosts":[{
"id":2,
"message":"bar"
}]
}
Ich habe hinzugefügt a:
json.SerializerSettings.ReferenceLoopHandling = ReferenceLoopHandling.Ignore;
Dies ist zum Entfernen der Referencelooping.
Kurz gesagt: Gibt es eine Möglichkeit, eine maximale Anzahl von Knoten zu serialisieren?
mögliche Duplikate von [Wie wird ein JSON-Objekt in C# in eine bestimmte Tiefe serialisiert oder deserialisiert?] (Http: // stackoverflow.com/questions/10453127/how-to-serialize-oder-deserialize-a-json-Objekt-zu-bestimmten-Tiefe-in-c) –
Ein benutzerdefinierter JsonWriter und ein benutzerdefinierter ContractResolver scheint der richtige Weg zu sein. Danke, dass Sie das Duplikat bemerkt haben. –