Heim >Backend-Entwicklung >C++ >Wie deserialisiere ich komplexe JSON-Objekte in einer stark typisierten Liste in einem ASP.NET MVC-Controller?
Deserialisieren komplexer Objekte mit JSON und jQuery in einem ASP.NET MVC-Controller
In ASP.NET MVC ist das Deserialisieren komplexer Objekte aus JSON möglich eine Herausforderung sein. Diese Frage befasst sich mit diesem Problem, bei dem der Benutzer versucht, ein Array komplexer Objekte von jQuery an eine Controller-Aktion zu übergeben.
Um dieses Problem zu beheben, nutzt die Lösung die [JsonFilter](https://web.archive.org/web/20120313075719/http://www.asp.net/web-api/overview/advanced/sending-and-receiving-json-in-aspnet-web- api) benutzerdefiniertes Attribut. Dieses Attribut deserialisiert die JSON-Anfrage in den entsprechenden Typ und bindet sie an einen Aktionsparameter.
Aktualisierter Ansichtscode
// Serialize the results into a JSON object var postData = { widgets: results }; // Send the JSON data to the controller $.ajax({ url: '/portal/Designer.mvc/SaveOrUpdate', type: 'POST', dataType: 'json', data: $.toJSON(widgets), contentType: 'application/json; charset=utf-8', success: function(result) { alert(result.Result); } });
Geänderter Controller-Code
[JsonFilter(Param = "widgets", JsonDataType = typeof(List<PageDesignWidget>))] public JsonResult SaveOrUpdate(List<PageDesignWidget> widgets) { // ... code to handle the updated widgets ... }
Benutzerdefinierter JsonFilter Attribut
public class JsonFilter : ActionFilterAttribute { public string Param { get; set; } public Type JsonDataType { get; set; } public override void OnActionExecuting(ActionExecutingContext filterContext) { if (filterContext.HttpContext.Request.ContentType.Contains("application/json")) { string inputContent; using (var sr = new StreamReader(filterContext.HttpContext.Request.InputStream)) { inputContent = sr.ReadToEnd(); } var result = JsonConvert.DeserializeObject(inputContent, JsonDataType); filterContext.ActionParameters[Param] = result; } } }
Diese Lösung deserialisiert das JSON-Array effektiv in eine stark typisierte Liste innerhalb des Controllers, sodass der Entwickler komplexe Objekte problemlos bearbeiten kann.
Das obige ist der detaillierte Inhalt vonWie deserialisiere ich komplexe JSON-Objekte in einer stark typisierten Liste in einem ASP.NET MVC-Controller?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!