Хорошо, поэтому я использую MVC 3, и это отлично подходит для де-сериализации набора данных JSON в строго типизированный объект, который передается моему действию контроллера. К сожалению, я не нашел решения для более динамичного случая.
Поддерживается ли встроенная в Json де-сериализация и классы для набора свойств "undefined"? Например, скажем, у меня есть некоторые фиксированные данные, такие как имя и возраст, но я также хочу передать динамически созданный список рейтингов, в которых пользователь мог бы ввести (или выбрать) фильм и установить рейтинговое значение в таблице.
Структура данных модели может быть примерно такой:
public class UserRatings
{
public string Name { get; set; }
public int Age { get; set; }
public Dictionary<string,int> Ratings { get; set; }
}
Но если предположить, что мой набор данных Json выглядит так: javascript:
var data = { Name: name, Age: age, Ratings: rating };
Если рейтинговая переменная представляет собой динамически построенный объект, состоящий из имени (или идентификатора) фильма в качестве ключа и рейтинга как числа. Естественно, де-сериализация этого в действии контроллера не будет успешной, поскольку он не понимает сопоставление рейтингов с довольно сложным словарным объектом. Но есть ли общая коллекция Json, которую я мог бы использовать вместо Ratings в качестве промежуточного формата?
Я попытался сделать объект Ratings строкой Json в javascript и просто отправить строку вниз, но я не могу найти "factory" или что-то, что может сделать структуру Json на С#, которую я могу перебрать на получить данные. Классы Json
и JsonResult
не помогают мне в этом отношении. В основном, как я могу использовать встроенную поддержку Json в MVC, чтобы выполнить собственную де-сериализацию в какой-то общий объект коллекции Json?