Heim > Backend-Entwicklung > C++ > Wie deserialisiere ich komplexe JSON-Objekte in einer stark typisierten Liste in einem ASP.NET MVC-Controller?

Wie deserialisiere ich komplexe JSON-Objekte in einer stark typisierten Liste in einem ASP.NET MVC-Controller?

Barbara Streisand
Freigeben: 2025-01-04 17:24:39
Original
871 Leute haben es durchsucht

How to Deserialize Complex JSON Objects into a Strongly-Typed List in an 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);
    }
});
Nach dem Login kopieren

Geänderter Controller-Code

[JsonFilter(Param = "widgets", JsonDataType = typeof(List<PageDesignWidget>))]
public JsonResult SaveOrUpdate(List<PageDesignWidget> widgets)
{
    // ... code to handle the updated widgets ...
}
Nach dem Login kopieren

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;
        }
    }
}
Nach dem Login kopieren

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!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage