MVC3 Преобразование JSON из службы REST в модель - PullRequest
0 голосов
/ 13 декабря 2011

Я пытаюсь реализовать удаленную службу REST, которая используется для обработки всей логики для моего веб-приложения MVC3, и до сих пор я могу извлечь сериализованный объект из веб-службы, но я застрял на десериализации объекта в моемViewModel для передачи в View.

Вот мой контроллер:

[HttpGet]
public ActionResult Index()
{
    string versions;
    using (var webClient = new WebClient())
    {
        versions = webClient.DownloadString("http://myservice/GetVersions");
    }

    // deserialize JSON/XML somehow...
    //IEnumerable<VersionViewModel> model = ?

    return View(model);
}

Что мне нужно сделать, чтобы преобразовать JSON, полученный от веб-службы, в ViewModel для визуализации моего представления?Спасибо.

Ответы [ 3 ]

1 голос
/ 13 декабря 2011

Вы можете использовать RestSharp для первоначального запроса, который должен автоматически преобразовывать JSON в подходящий объект передачи данных (DTO).Оттуда вы можете использовать что-то вроде AutoMapper для преобразования из класса DTO -> ViewModel.

DTO (конечно, не зная, как выглядит ваш JSON):

public class VersionDto
{
     public string Name { get; set; }
     public string Version { get; set; }
}

Окончательный результат примерно такой:

[HttpGet]
public ActionResult Index()
{
    var client = new RestClient ("http://myservice");
    List<VersionDto> versions = client.Execute<List<VersionDto>> (new RestRequest ("/GetVersions"));

    var vms = Mapper.Map<IEnumerable<VersionDto>, IEnumerable<VersionViewModel>> (versions);

    return View(vms);
}

В вики RestSharp есть много документов о том, как она отображает JSON в ваши классы DTO, позволяя вам меньше беспокоиться о сериализации и больше о вашей бизнес-логике.

0 голосов
/ 13 декабря 2011

Вы можете просто десериализовать с помощью Deserialize() метода JavaScriptSerializer class

JavaScriptSerializer jss = new JavaScriptSerializer();
var versions = jss.Deserialize<IEnumerable<VersionViewModel>>(versions);
return View(versions);
0 голосов
/ 13 декабря 2011

Просто используйте XmlSerializer или JsonSerializer и преобразуйте строку результата в объект. Если вы воспользуетесь каким-либо из этих терминов, вы получите много хитов, так как оно действительно распространено. Есть даже проект кодекса для JSON http://json.codeplex.com/

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...