2014-01-24 46 views
3

服务器端:ASP.NET WEB-API 2.0转换JSON发布数据到对象阵列

我发布了一堆名称值对从客户端到服务器端作为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映射为单个对象,并将每个名称值映射到对象属性。不知道如何将其转换为对象数组。我需要它是一个数组,因为名称值对的数量是动态的。

任何帮助将不胜感激!

在此先感谢..

回答

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