Стандартный сериализатор JSON не поддерживает это из коробки, однако JSON.NET и System.Web.Script.Serialization.JavaScriptSerializer
поддерживают это, проверьте ответы на аналогичный вопрос:
Как я могу десериализовать JSON в простой словарь <строка, строка> в 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);
}