如何在MVC4中将Json字符串转换为C#对象

时间:2015-02-06 07:11:11

标签: c# json asp.net-mvc-4

我有一个json字符串,它使用Model string value属性在控制器上提交。我想将这个json字符串转换为c#通用列表对象。

下面是我的json字符串

{
    "MLIDandRackPosition": [
        {
            "MLID": "27",
            "PositionInRack": "3"
        },
        {
            "MLID": "24",
            "PositionInRack": "4"
        }
    ]
}

以下是我的课程

  public class MLIDandRackPosition
    {
        public int MLID { get; set; }
        public int PositionInRack { get; set; }
    }

我想在控制器操作方法上使用json字符串中的MLIDandRackPosition类列表。

请帮忙

3 个答案:

答案 0 :(得分:3)

使用JSON.NET,您可以在一行中完成:

MLIDandRackPosition myObj = JsonConvert.DeserializeObject<MLIDandRackPosition>(myString);

有关JSON.NET的更多信息,请参阅http://www.newtonsoft.com/json/help/html/Introduction.htm

答案 1 :(得分:2)

我强烈建议您使用.NET平台的NewtonSoft库,在讨论JSON序列化时是最好的。

答案 2 :(得分:1)

您的对象将正确绑定到

public ActionResult SomeAction(IEnumerable<MLIDandRackPosition> MLIDandRackPosition)

如果设置以下ajax参数

var data = { "MLIDandRackPosition": [ { "MLID": "27", "PositionInRack": "3" }, { "MLID": "24", "PositionInRack": "4" } ] };

$.ajax({
  ...
  traditional: true,
  contentType: "application/json; charset=utf-8",
  data: JSON.stringify(data)
})

虽然我建议更改参数名称(比如model)和var data = { "model": [ { "MLID": ....] };