Verhindern, dass $id/$ref beim serialisieren von Objekten mithilfe von Web-API und JSON.NET
Ich kann nicht scheinen, um zu verhindern, dass Web-API/JSON.NET aus mit Newtonsoft.Json.PreserveReferencesHandling.Objects
beim serialisieren von Objekten. In anderen Worten, " $id/$ref sind immer in der serialisierten Objekte, trotz Verwendung der folgenden Einstellungen:
public class MvcApplication : System.Web.HttpApplication {
protected void Application_Start () {
WebApiConfig.Register(GlobalConfiguration.Configuration);
}
}
public static class WebApiConfig {
public static void Register (HttpConfiguration config) {
JsonMediaTypeFormatter jsonFormatter = config.Formatters.OfType<JsonMediaTypeFormatter>().Single();
jsonFormatter.UseDataContractJsonSerializer = false;
jsonFormatter.SerializerSettings.Formatting = Newtonsoft.Json.Formatting.Indented;
jsonFormatter.SerializerSettings.ReferenceLoopHandling = Newtonsoft.Json.ReferenceLoopHandling.Ignore;
jsonFormatter.SerializerSettings.PreserveReferencesHandling = Newtonsoft.Json.PreserveReferencesHandling.None;
}
}
Irgendwelche Ideen?
- Diese Einstellung in der
WebApiConfig
Klasse (public static void Register (HttpConfiguration config)
von derprotected void Application_Start ()
innerhalb von Global.asax.cs - Als pro @AndreHaverdings' Antwort unten, mit PreserveReferencesHandling auf Alle gesetzt ist, bewirkt, dass die ids und Referenzen Hinzugefügt werden. Einstellung Ihre Letzte Zeile zu
jsonFormatter.SerializerSettings.PreserveReferencesHandling = Newtonsoft.Json.PreserveReferencesHandling.None;
sollte den trick tun.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Setzen Sie diese in die Global.asax konfigurieren Referenz-handling. PreserveReferencesHandling sollte nicht 'Alle'
Hier finden Sie einige javascript-ich bin mit handhaben $id/$ref-Objekten auf der client-Seite:
Wenn durch Serialisierung Attribute von Objekten (wie DataContract), von der JSON.Net Dokumentation zur Serialisierung Attribute:
Er sagt auch dies:
Scheint es die Lösung des Problems ist das hinzufügen
[JsonObject(IsReference = false)]
zu Ihrem Objekt(s) wie folgt:Mein Antrag wurde verursacht Fehler, die ich ausgetestet meine asp.net Anwendung, bis es mir die Sammlung von Modell-die dieses Problem verursachen.
nur die [JsonIgnore] - tag und es hat gut funktioniert.
Können Sie manuell testen durch die Zuordnung [JsonIgnore] an alle die ICollection-Schnittstelle in das Modell zu entdecken, die Quelle der Ausgabe.
[JsonIgnore]
für mich gearbeitet. Innerhalb des Modells sind:Leider, dies muss für jeden Fall, wo nötig.