在MVC控制器中,我有一段代码
[HttpPost]
public ActionResult One(Dictionary<Guid, int[]> groups)
{
return Json(groups);
}
我需要提供什么样的json结构才能将它正确地序列化到Dictionary中? 试过以下:
{
"Key": "4e89af43-59c8-492b-b646-1185e3f8776c",
"Value": [1, 2, 3, 4, 5]
}
和
{
"groups": {
"Key": "4e89af43-59c8-492b-b646-1185e3f8776c",
"Value": [1, 2, 3, 4, 5]
}
}
答案 0 :(得分:0)
如果要将其序列化为“Dictionary”,则需要以下结构:
{
"Key": "Value",
"Key": "Value",
"Key": "Value"
}
在您的情况下,它将是以下对象:
{
"4e89af43-59c8-492b-b646-1185e3f8776c": [1, 2, 3, 4, 5],
"4e89af43-1234-492b-b646-1185e3f8776c": [0, -1, -2],
"4e89af43-59c8-5678-b646-1185e3f8776c": [7]
}
就ASP.NET中的JSON请求而言,您可能需要将其包装在与变量名对应的对象中:
{
groups: {
"4e89af43-59c8-492b-b646-1185e3f8776c": [1, 2, 3, 4, 5],
"4e89af43-1234-492b-b646-1185e3f8776c": [0, -1, -2],
"4e89af43-59c8-5678-b646-1185e3f8776c": [7]
}
}
至少,Dictionary<string, int[]>
确实应该如此
您有Guid
作为密钥,我希望ASP.NET
能够将Guid正确序列化为字符串。
答案 1 :(得分:0)
似乎GUID
并不意味着在字典中进行序列化。这是我收到的错误
所以我不得不将我的词典更改为下面的参数以及要发送的参数,如下一段代码
[HttpPost]
public ActionResult One(Dictionary<string, int[]> groups)
{
return Json(groups);
}
JSON输入
{"groups":[
{
"Key": "4e89af43-59c8-492b-b646-1185e3f8776c",
"Value": [1, 2, 3, 4, 5]
}
]}
感谢所有帮助过的人和