ホームページ >バックエンド開発 >C++ >ASP.NET MVC コントローラーで複雑な JSON オブジェクトを厳密に型指定されたリストに逆シリアル化する方法

ASP.NET MVC コントローラーで複雑な JSON オブジェクトを厳密に型指定されたリストに逆シリアル化する方法

Barbara Streisand
Barbara Streisandオリジナル
2025-01-04 17:24:39875ブラウズ

How to Deserialize Complex JSON Objects into a Strongly-Typed List in an ASP.NET MVC Controller?

ASP.NET MVC コントローラーでの JSON と jQuery を使用した複雑なオブジェクトの逆シリアル化

ASP.NET MVC では、JSON から複雑なオブジェクトを逆シリアル化できます。挑戦してください。この質問は、ユーザーが複雑なオブジェクトの配列を jQuery からコントローラー アクションに渡そうとするこの問題に対処します。

これに対処するために、ソリューションは[JsonFilter](https://web.archive.org/web/20120313075719/http://www.asp.net/web-api/overview/advanced/sending-and-receiving-json-in-aspnet-web- API) カスタム属性。この属性は、JSON リクエストを適切なタイプに逆シリアル化し、アクション パラメーターにバインドします。

更新されたビュー コード

// 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);
    }
});

変更されたコントローラー コード

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

カスタム JsonFilter属性

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;
        }
    }
}

このソリューションは、JSON 配列をコントローラー内で厳密に型指定されたリストに効果的に逆シリアル化し、開発者が複雑なオブジェクトを簡単に操作できるようにします。

以上がASP.NET MVC コントローラーで複雑な JSON オブジェクトを厳密に型指定されたリストに逆シリアル化する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。