通过JSON向MVC控制器发送javascript参数字典
我使用的是第三方库,无法真正改变它将数据发布到MVC5控制器的方式 我不知道如何设置我的模型来接收数据 json是一个通过JSON向MVC控制器发送javascript参数字典,javascript,c#,json,asp.net-mvc,dictionary,Javascript,C#,Json,Asp.net Mvc,Dictionary,我使用的是第三方库,无法真正改变它将数据发布到MVC5控制器的方式 我不知道如何设置我的模型来接收数据 json是一个 { "expiration":"2015-06-14T21:02:52.969Z", "conditions":[ {"acl":"private"}, {"bucket":"anyoldbucket"}, {"Content-Type":"application/pdf"}, {"success_action_status":"200"},
{
"expiration":"2015-06-14T21:02:52.969Z",
"conditions":[
{"acl":"private"},
{"bucket":"anyoldbucket"},
{"Content-Type":"application/pdf"},
{"success_action_status":"200"},
{"key":"somekey"}
]
}
我试着这样设置我的模型
public class AwsSignatureRequestViewModel
{
public DateTime expiration { get; set; }
public Dictionary<string, string> conditions { get; set; }
}
公共类AwsSignatureRequestViewModel
{
公共日期时间过期{get;set;}
公共字典条件{get;set;}
}
过期日期已正确填写,我得到了正确数量的条件,但字典的键是数字(索引),值为空
有什么建议吗?如果您的模型很严格,则需要为每个子对象创建对象。 但是如果你有一个动态模型,你可以从你的请求中读取原始字符串并用Json.net解析它
public ActionResult Test(string model)
{
Request.InputStream.Seek(0, SeekOrigin.Begin);
string jsonData = new StreamReader(Request.InputStream).ReadToEnd();
var dynamicObject = JObject.Parse(jsonData);
...
}
dynamicObject将包含所有json。如果您的模型是严格的,则需要为每个子对象创建对象。 但是如果你有一个动态模型,你可以从你的请求中读取原始字符串并用Json.net解析它
public ActionResult Test(string model)
{
Request.InputStream.Seek(0, SeekOrigin.Begin);
string jsonData = new StreamReader(Request.InputStream).ReadToEnd();
var dynamicObject = JObject.Parse(jsonData);
...
}
dynamicObject将包含您的所有json。IINM,根据您获得的数据,您的
AwsSignatureRequestViewModel
应该如下所示:
public class AwsSignatureRequestViewModel
{
public DateTime expiration { get; set; }
public List<Dictionary<string, string>> conditions { get; set; }
}
Hth…IINM,根据您获得的数据,您的
AwsSignatureRequestViewModel
应该如下所示:
public class AwsSignatureRequestViewModel
{
public DateTime expiration { get; set; }
public List<Dictionary<string, string>> conditions { get; set; }
}
Hth…您是否使用JSON.NET?您可能必须为条件创建单独的模型并添加关系。您是否使用JSON.NET?您可能必须为条件创建单独的模型并添加关系。您是否使用JSON.NET?您可能必须为条件创建单独的模型并添加关系。这确实有效,但下面由Demonia提供的解决方案更适合我的用例,因为我可以得到一个包含我需要的结果的词典,而不是一系列词典,谢谢though@PhilipHey当然,只要管用就行。尽管这取决于您的用例,但您甚至可能不需要使用
控制器
,因为在一天结束时,您真正需要的只是获取请求流数据(而不是通过某种“模型”)。Hth..这确实有效,但是Demonia下面的解决方案对我的用例更有效,因为我可以得到一个包含我需要的结果的字典,而不是一个字典数组,谢谢though@PhilipHey当然,只要管用就行。尽管这取决于您的用例,但您甚至可能不需要使用控制器
,因为在一天结束时,您真正需要的只是获取请求流数据(而不是通过某种“模型”)。Hth..这确实有效,但是Demonia下面的解决方案对我的用例更有效,因为我可以得到一个包含我需要的结果的字典,而不是一个字典数组,谢谢though@PhilipHey当然,只要管用就行。尽管这取决于您的用例,但您甚至可能不需要使用控制器
,因为在一天结束时,您真正需要的只是获取请求流数据(而不是通过某种“模型”)。谢谢,我可以添加这一行来将数据输入到我的模型中。var model=dynamicObject.ToObject();是的,很抱歉,我忘记将代码行转换为您的模型。谢谢,我能够添加这一行以将数据获取到我的模型中。var model=dynamicObject.ToObject();是的,很抱歉,我忘记将代码行转换为您的模型。谢谢,我能够添加这一行以将数据获取到我的模型中。var model=dynamicObject.ToObject();是的,对不起,我忘了把代码行转换成你的模型。