/ / MVC3 Convertir JSON du service REST en modèle - json, web-services, asp.net-mvc-3, reste

MVC3 Convertir JSON du service REST en modèle - json, services Web, asp.net-mvc-3, reste

J'essaie d'implémenter un service REST distantqui est utilisé pour gérer toute la logique de mon application Web MVC3 et, jusqu’à présent, je suis en mesure de récupérer l’objet sérialisé à partir du service Web, mais je suis obligé de le désérialiser dans mon ViewModel pour le transmettre à la View.

Voici mon contrôleur:

[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);
}

Que dois-je faire pour convertir le JSON que je reçois du service Web en un ViewModel pour rendre mon affichage? Merci.

Réponses:

1 pour la réponse № 1

Vous pourriez utiliser RestSharp pour la demande initiale, qui devrait pouvoir convertir automatiquement le JSON en un objet de transfert de données (DTO) approprié. De là, vous pouvez utiliser quelque chose comme AutoMapper convertir depuis DTO -> classe ViewModel.

Le DTO (sans savoir à quoi ressemble votre JSON, bien sûr):

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

Le résultat final ressemble à ceci:

[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);
}

Le wiki RestSharp contient de nombreux documents sur la façon dont il mappe le JSON sur vos classes DTO, ce qui vous permet de vous soucier moins de la sérialisation et de votre logique métier.


0 pour la réponse № 2

Il suffit d’utiliser un XmlSerializer ou un JsonSerializer etconvertit la chaîne de résultat en objet. Si vous recherchez l'un de ces termes sur Google, vous obtiendrez beaucoup de résultats, car il est très courant. Il y a même un projet codeplex pour JSON http://json.codeplex.com/


0 pour la réponse № 3

Vous pouvez simplement désérialiser avec Deserialize() méthode de JavaScriptSerializer classe

JavaScriptSerializer jss = new JavaScriptSerializer();
var versions = jss.Deserialize<IEnumerable<VersionViewModel>>(versions);
return View(versions);