默認JSON序列不支持這個開箱即用的,但是JSON.NET和System.Web.Script.Serialization.JavaScriptSerializer
支持這一點,覈對答案,以一個類似的問題:
How can I deserialize JSON to a simple Dictionary<string,string> in ASP.NET?
JSON.NET將成爲默認的JSON序列ASP.NET 4.5 WebAPI,因此您可以期望它可以隨ASP.NET一起提供並從MS獲得支持。
UPDATE
爲了讓ASP.NET模型綁定正常,你需要一個定製的模型綁定:
public class DictionaryModelBinder : IModelBinder
{
public object BindModel(ControllerContext controllerContext, ModelBindingContext bindingContext)
{
var serializer = new JavaScriptSerializer();
var value = controllerContext.RequestContext.HttpContext.Request.Form["json"];
return serializer.Deserialize<Dictionary<string, object>>(HttpUtility.UrlDecode(value));
}
}
而新模型綁定添加到Application_Start方法中應用模型聯:
protected void Application_Start()
{
ModelBinders.Binders.Add(typeof (Dictionary<string, object>), new DictionaryModelBinder());
RegisterRoutes(RouteTable.Routes);
}
它會幫助,如果你告訴我們*你怎麼稱呼這個方法... – epoch 2012-03-12 12:05:35
@epoch我通過Fiddler調用它。這些是參數。 – 2012-03-12 12:07:09