服务器端:ASP.NET WEB-API 2.0
我将一堆名称值对从客户端发布到服务器端作为JSON。在服务器端(WEB API控制器),我想将它们转换为包含名称和值的对象的数组/列表。
JSON发布数据:
[{"name":"sEcho","value":9},
{"name":"iColumns","value":6},
{"name":"sColumns","value":"Name1,Name2,Name3,Name4,Name5,Name6"},
{"name":"iDisplayStart","value":0},
{"name":"iDisplayLength","value":10},
{"name":"mDataProp_0","value":0},
{"name":"mDataProp_1","value":1},
{"name":"mDataProp_2","value":2},
{"name":"mDataProp_3","value":3}]
我尝试使用以下模式在服务器端映射,但它无法正常工作
public IHttpActionResult Post([FromBody]GridDataModel gridData)
模型
public class GridDataModel
{
public GridData[] GridData { get; set; }
}
public class GridData
{
public string Name { get; set; }
public string Value { get; set; }
}
我习惯于像这样将JSOn strcuture映射到一个对象,每个名称值映射到一个对象属性。不知道如何将其转换为对象数组。我需要它成为一个数组,因为名称值对的数量将是动态的。
任何帮助将不胜感激!
提前致谢..
答案 0 :(得分:4)
该方法需要单个实例而不是数组。我相信你可以做两件事
1)更改方法签名
public IHttpActionResult Post([FromBody]IEnumerable<GridData> gridData)
2)更改json对象
{"gridData": [{"name":"sEcho","value":9},
{"name":"iColumns","value":6},
{"name":"sColumns","value":"Name1,Name2,Name3,Name4,Name5,Name6"},
{"name":"iDisplayStart","value":0},
{"name":"iDisplayLength","value":10},
{"name":"mDataProp_0","value":0},
{"name":"mDataProp_1","value":1},
{"name":"mDataProp_2","value":2},
{"name":"mDataProp_3","value":3}]}