Załóżmy, że mam te uprawnienia z tymi relacjami: To tylko fikcyjny przykład, a nie moje obecne byty.Ustaw maksymalną głębokość serializacji JSON w .NET Web API
- Kurs
- użytkownika
- Newsów
Kursy mają wielu użytkowników, Użytkownicy mają wiele pól
Kurs ma wiele Newsów, Newsów ma wiele pól
Użytkownicy ma wiele NewsPosts, NewsPosts ma wielu użytkowników
Najpierw używam kodu Entity Framework z .NET Web API, który odsyła obiekty w formie JSON. Kiedy próbuję uzyskać kurs, wysyła on wynik JSON z relacjami z obiektu, co jest w porządku, ale chciałbym ustawić limit liczby poziomów, które serializuje, tak aby nie serializować wszystkich relacji poza pierwszym lub drugi poziom.
GET przedmiotów/będzie w odcinkach do:
{
"Users":[{
"id":1,
"newsPosts": [{
"id":1,
"message":"foo"
}]
}],
"newsPosts":[{
"id":2,
"message":"bar"
}]
}
Co ja chciałbym to do serializacji tylko 1, góra 2 poziomy, tak że wynik będzie:
{
"Users":[{
"id":1,
"newsPosts": []
}],
"newsPosts":[{
"id":2,
"message":"bar"
}]
}
Dodałem a:
json.SerializerSettings.ReferenceLoopHandling = ReferenceLoopHandling.Ignore;
Służy to do usunięcia listowania referencji.
Krótko mówiąc: czy istnieje sposób ustawienia maksymalnej liczby węzłów do serializacji?
możliwy duplikat [Jak serializować lub deserializować obiekt JSON do pewnej głębokości w C#?] (Http: // stackoverflow.com/questions/10453127/how-to-serialize-lub-deserialize-a-json-object-to-a-depth-in-c) –
Niestandardowy JsonWriter i niestandardowy ContractResolver wydaje się być drogą do zrobienia. Dzięki, że zauważyłeś duplikat. –