【问题标题】:How does MVC asp.net serialization work for Json object on Controller actions?MVC asp.net 序列化如何在 Controller 操作上对 Json 对象起作用?
【发布时间】:2011-09-07 07:55:58
【问题描述】:

MVC asp.net 序列化如何在 Controller 操作上为 Json 对象工作?

例如,我有一个自定义对象,如果将带有 JSON 对象的 ajax 请求发送到服务器操作

public ActionResult(List<CustomObject> abc)
{
   // Object is serialized automatically how MVC is doing it is the question.
}

我问这个的原因是我的一些对象没有正确序列化,因此存在数据丢失,那么我必须恢复到字符串值的旧方法来序列化。

public ActionResult(string abc)
{ 
   JavaScriptSerializer serializer = new JavaScriptSerializer();

   List<CustomObject> lstabc = serializer.Deserialize<List<CustomObject>>(abc);
}

我想避免哪些,其次哪些是进行 JSON 对象序列化 MVC Asp.net 的最佳库?

【问题讨论】:

  • 我认为您需要编写自己的 JsonResult 类(使用适当的 Controller 扩展方法)。 Afaik .NET 的最佳 JSON 库是 Newtonsoft.JSON(在 NUGet 上可用)

标签: c# asp.net-mvc-3


【解决方案1】:

反序列化由模型绑定器负责。

如果您发现它不起作用,您可以创建自己的自定义模型绑定器并将其注册到框架中 - 这应该意味着您可以避免控制器中的所有反序列化噪音。

在以下 SO 问题中有一些链接可以解释这一点以及如何实现自定义模型绑定器:

ASP.Net MVC Custom Model Binding explanation

比较流行的 json 序列化库之一是 newtonsoft json.net 库 - 我已经有效地使用了很多次:

http://james.newtonking.com/pages/json-net.aspx

祝你好运!

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-04-17
    • 1970-01-01
    • 2023-04-06
    • 1970-01-01
    • 2011-10-25
    • 1970-01-01
    • 1970-01-01
    • 2012-09-18
    相关资源
    最近更新 更多