Существует довольно много вопросов относительно десериализации JSON, но многие из них, похоже, относятся к MVC 1 или MVC 2. Похоже, я не нашел удовлетворительного ответа на этот вопрос специально для MVC 3.
У меня есть объект с неизменяемыми свойствами и без конструктора по умолчанию, который я хочу десериализовать в приложении ASP.NET MVC 3.Вот упрощенная версия:
public class EmailAddress
{
public EmailAddress(string nameAndEmailAddress)
{
Name = parseNameFromNameAndAddress(nameAndEmailAddress);
Address = parseAddressFromNameAndAddress(nameAndEmailAddress);
}
public EmailAddress(string name, string address)
{
Guard.Against<FormatException>(!isNameValid(name), "Value is invalid for EmailAddress.Name: [{0}]", name);
Guard.Against<FormatException>(!isAddressValid(address), "Value is invalid for EmailAddress.Address: [{0}]", address);
Name = name;
Address = address;
}
public string Address { get; private set; }
public string Name { get; private set; }
// Other stuff
}
Примером действия контроллера может быть:
[HttpPost]
public ActionResult ShowSomething(EmailAddress emailAddress)
{
return View(emailAddress)
}
Входит JSON:
{"Address":"joe@bloggs.com","Name":"Joe Bloggs"}
Что лучшеспособ получить это для десериализации в MVC3?Есть ли какой-нибудь способ реализации пользовательского связывателя модели или класса десериализатора, который может это обработать?
Было бы предпочтительным решение, которое не мешает самому объекту (т. Е. Отдельный класс десериализатора, а не добавление атрибутов).свойствам и т. д.), хотя открыты для любых хороших предложений.
Я нашел похожий вопрос (без ответа) здесь: Можно ли десериализовать неизменный объект с помощью JavascriptSerializer?