2012-03-25 3 views
1

J'essaie d'installer et de consommer une application de repos webapi asp.net et de le consommer à partir d'un autre projet.Désérialise webapi repsonse à mvc4 viewmodel dans l'application

J'ai fait une aide simple pour appeler le service comme

public static string GetApiResponse(string apiMethod,Dictionary<string,string>queryString=null) 
    { 
     using (var client = new WebClient()) 
     { 
      client.Headers.Add("ApiKey", ConfigurationManager.AppSettings["ApiKey"]); 
      //add any query string values into the client 
      if (queryString != null) 
      { 
       foreach (var query in queryString) 
       { 
        client.QueryString.Add(query.Key, query.Value); 
       } 
      } 
      try 
      { 
       string url = string.Format("{0}{1}", ConfigurationManager.AppSettings["ApiBaseUrl"],apiMethod); 
       return(client.DownloadString(url)); 
      } 
      catch (Exception ex) 
      { 
       return ex.Message; 
      } 

     } 
    } 

Je consommais depuis mon contrôleur dans un autre projet comme

private IEnumerable<CustomerModel> CustomerDetails() 
    { 
     var json = ApiRestHelper.GetApiResponse("Customer/Get"); 

     var data = JsonConvert.DeserializeObject<CustomerViewModel>(json, new JsonSerializerSettings 
                      { 

                      }); 

Les données renvoyées par le service est à la recherche comme

[{"CustomerId":"24a62bf8-7a4e-4837-859d-1f04dc983011","FirstName":"Joe","LastName":"Bloggs","StoreCustomerId":null}] 

Mon CustomerViewModel est

public class CustomerViewModel 
{ 
    public IEnumerable<CustomerModel> Customers { get; set; } 
} 

Je peux voir les données qui sont retournées sont un tableau et j'essaye de le convertir en liste. Je reçois une erreur

ne peut désérialiser tableau JSON (à savoir [1,2,3]) dans le type 'WebApplication.Models.ViewModels.CustomerViewModel'.

Le type désérialisé doit être un tableau ou mettre en œuvre une interface de collection comme IEnumerable, ICollection ou IList.

Que dois-je changer pour permettre la désérialisation dans mon modèle de vue?

Répondre

0

J'essayais de me tromper.

 var data = JsonConvert.DeserializeObject<List<CustomerModel>>(json, new JsonSerializerSettings 
                      { 

                      }); 

le tour est joué

Questions connexes