将JSON post数据转换为对象数组

时间:2014-01-24 12:33:46

标签: json asp.net-web-api json.net

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

任何帮助将不胜感激!

提前致谢..

1 个答案:

答案 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}]}
相关问题