如果我的IDictionary<string, string> MyDictionary
类似于此:
{
{"foo", "bar"},
{"abc", "xyz"}
}
在我的MVC控制器中我有一个这样的方法:
[HttpPost]
public JsonResult DoStuff()
{
return Json(MyDictionary);
}
......它发回的内容如下:
[
{"Key":"foo", "Value":"bar"},
{"Key":"abc", "Value":"xyz"}
]
我期待(并且想要)类似的东西:
{
"foo":"bar",
"abc":"xyz"
}
我该如何做到这一点?
更新
因此,这与使用自定义JSON序列化程序的ASP.NET 2.0应用程序升级此项目的事实直接相关;显然,为了向后兼容,他们在MVC应用程序中使用了默认的JSON序列化程序。最终,我使用Json.NET结果在我的控制器中覆盖了这种行为,我的问题得到了解决。
答案 0 :(得分:4)
使用默认的Json序列化程序(Json.Net),它应该从Dictionary<string, string>
{"Foo": "TTTDic", "Bar": "Scoo"}
使用您的操作方法:
[HttpPost]
public JsonResult DoStuff()
{
var MyDictionary = new Dictionary<string, string>();
MyDictionary.Add("Foo", "TTTDic");
MyDictionary.Add("Bar", "Scoo");
return Json(MyDictionary);
}
在 MVC5 和 MVC6 中验证了这一点。
如果您仍然遇到问题,为什么不使用您想要的属性创建一个简单的POCO?
public class KeyValueItem
{
public string Foo { set; get; }
public string Abc { set; get; }
}
创建一个对象,设置属性值并将其作为JSON发送。
[HttpPost]
public JsonResult DoStuff()
{
var item = new KeyValueItem
{
Foo="Bee",
Abc="Scoo"
};
return Json(item );
}