C#将JSON对象数组解析为List <t>

时间:2017-01-11 17:42:59

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

我有一个使用jquery [Flags] public enum Options { None = 0, Option1 = 1, Option2 = 2, Option3 = 4, Option4 = 8 } 的表单将以下JSON发送到服务器:

$.post

JSON发布到类似于此的控制器:

{
    id: 1,
    label: "myLabel",
    results: [
        { name: "myName1", value: "myValue1" },
        { name: "myName2", value: "myValue2" }
    ]
}

我也有以下课程:

public ActionResult Submit(int id, string label, List<object> results){...}

我希望能够播放JSON&#39;结果&#39;的内容。数组到&#39; FormValue&#39;我可以将控制器编写为:

public class FormValue {
    public string name {get;set;}
    public string value {get;set;}
}

我错过了什么?

1 个答案:

答案 0 :(得分:2)

在接收端你有1个c#对象。所以你会有像

这样的东西
public class Model { 
  public string Id {get;set;} 
  public string Label {get;set;} 
  public List<FormValues> Results {get;set;}
}

然后该类型成为action方法中的单个参数。

[HttpPost] // do not forget this
public ActionResult Submit(Model model){/*...*/}

这是因为您在Http方法体中发送的json对象只能映射到单个对应的c#对象(如果您使用的是内置绑定)。

还要注意对Http动词的限制。如果操作被视为幂等,您也可以使用HttpPut这绝不是HttpGet方法,因为Http get不支持邮件正文。