Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/309.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
将JSON绑定到模型C#_C#_Asp.net Mvc_Json_Model Binding - Fatal编程技术网

将JSON绑定到模型C#

将JSON绑定到模型C#,c#,asp.net-mvc,json,model-binding,C#,Asp.net Mvc,Json,Model Binding,我对我的Web API有一个HttpPost请求,并将数据保存到我的数据库中。问题在于JSON数据不是静态格式,如下所示: { "35":{ "FormId":"4", "DateSubmitted":"2014-04-03 10:45:05", "UserIp":"127.0.0.1", "Username":"", "UserId":"0", "Lang":"en-GB", "confirmed":"Yes" }, "36":{ "FormId":"4", "DateSubmitted":"

我对我的Web API有一个HttpPost请求,并将数据保存到我的数据库中。问题在于JSON数据不是静态格式,如下所示:

{
"35":{
"FormId":"4",
"DateSubmitted":"2014-04-03 10:45:05",
"UserIp":"127.0.0.1",
"Username":"",
"UserId":"0",
"Lang":"en-GB",
"confirmed":"Yes"
},
"36":{
"FormId":"4",
"DateSubmitted":"2014-04-04 02:18:52",
"UserIp":"127.0.0.1",
"Username":"",
"UserId":"0",
"Lang":"en-GB",
"confirmed":"Yes"
}
}
这里的35和36可以是任何数字,我不知道如何将其绑定到模型。 任何人都可以给我指路?
提前感谢

下面是一个快速示例,说明如何使用JSON.Net和dynamic关键字实现我认为您要实现的目标。为了简单起见,我去掉了一些属性:

[HttpPost]
public void POST(string text)
{
    dynamic result = JsonConvert.DeserializeObject(text);
    foreach (var res in result)
    {
        var ele = new Test();
        ele.ArrayId = int.Parse(res.Name);
        dynamic value = res.Value;
        ele.FormId = int.Parse(value.FormId.Value);
        ele.Ip = value.UserIp.Value;
        //etc.
    }
}
以及与之配套的模型类:

public class Test
{
    public int ArrayId { get; set; }
    public int FormId { get; set; }
    public string Ip { get; set; }
}

你能控制JSON的格式吗?看起来你更倾向于一个对象数组而不是单独的命名对象,对吗?是的,它是一个解析为JSON的对象数组。我对此没有控制权。该请求是从另一个网站中的ajax请求发布的。你可以拥有一个包含数组索引和类对象。然后你循环这个包装器模型来保存实际数据,如FormId等。如果我没有错的话,默认情况下使用JSON.NET的Web API。那么我如何获得“var text”API操作的值?抱歉,我对Web API完全陌生:DNo问题。我认为您可以将POST控制器的参数类型更改为字符串,然后获得原始JSON值。我将尝试编辑我的答案以包含详细信息。感谢它的工作。我获得JSON原始值并使用JSON.NET对其进行反序列化,然后绑定到我的型号:D。