2010-06-01 16 views
18

Ho un oggetto nel mio progetto con riferimenti circolari. Ho messo [JsonIgnore] sopra il campo in questo modo:Gli attributi di JsonIgnore non funzionano in ASP.NET?

[JsonIgnore] 
    public virtual Foobar ChildObject { get; set; } 

sto ancora ricevendo errori di riferimento circolare quando ho serializzare l'oggetto. Gli unici campi che non hanno JsonIgnore sono campi stringa e non dovrebbero causare questo. C'è qualcos'altro che devo fare per far funzionare JsonIgnore?

Grazie!

+0

La risposta ha aiutato? – JustinStolle

+0

Sono appena tornato dalle vacanze, guarderò stasera e ti faccio sapere. Grazie! –

+2

È anche possibile utilizzare [ScriptIgnore] poiché [JSONIgnore] sembra non essere implementato. – defines

risposta

22

Probabilmente avete qualche altra proprietà che rimanda al suo genitore. Utilizzare l'impostazione ReferenceLoopHandling.Ignore per impedire loop autoreferenziali.

using Newtonsoft.Json; 

JsonSerializerSettings jsSettings = new JsonSerializerSettings(); 
jsSettings.ReferenceLoopHandling = ReferenceLoopHandling.Ignore; 

string json = JsonConvert.SerializeObject(foobars, Formatting.None, jsSettings); 
+0

Ho cercato dappertutto questo; diverse menzioni che Newtonsoft supporta ignorando riferimenti circolari e nessuna menzione della proprietà effettiva da impostare. Grazie! – defines

+0

grazie Ma come continuo a usare 'JSon (modelli," text/json ", JsonRequestBehavior.AlloGet)'? – Bellash

+2

@Bellash Non so cosa stai chiedendo. – JustinStolle

Problemi correlati