Diciamo che ho questi entitites con queste relazioni: Questo è solo un esempio fittizio, e non le mie entità attuali.Impostare una profondità massima della serializzazione JSON in .NET Web API
- Corso
- utente
- NewsPosts
Corsi hanno molti utenti, Gli utenti hanno molti campi
Corsi ha molte NewsPosts, NewsPosts ha molte Corsi
utenti ha molti NewsPost, NewsPost ha molti utenti
Sto utilizzando il codice di Entity Framework prima con .NET Web API, che rimanda le entità sotto forma di JSON. Quando provo a ottenere un corso, restituisce un risultato JSON con le relazioni delle entiti, che va bene, ma vorrei impostare un limite di quanti livelli si serializza in modo che non serializzi tutte le relazioni oltre la prima o secondo livello.
GET Corso/sarebbe serializzato a:
{
"Users":[{
"id":1,
"newsPosts": [{
"id":1,
"message":"foo"
}]
}],
"newsPosts":[{
"id":2,
"message":"bar"
}]
}
quello che vorrei è quello di serializzare solo 1 o forse 2 livelli, in modo che il risultato sarebbe:
{
"Users":[{
"id":1,
"newsPosts": []
}],
"newsPosts":[{
"id":2,
"message":"bar"
}]
}
ho aggiunto a:
json.SerializerSettings.ReferenceLoopHandling = ReferenceLoopHandling.Ignore;
Questo serve per rimuovere il riferimento.
Quindi, in breve: esiste un modo per impostare la quantità massima di nodi da serializzare?
possibile duplicato di [Come serializzare o deserializzare un oggetto JSON in una certa profondità in C#?] (Http: // stackoverflow.it/questions/10453127/how-to-serialize-o-deserialize-a-json-object-to-a-certain-depth-in-c) –
Un JSWriter personalizzato e un ContractResolver personalizzato sembrano la soluzione giusta. Grazie per aver notato il duplicato. –