2015-03-01 1 views
1

J'ai des problèmes de désérialisation avec RestSharp. Je reçois la réponse JSON suivanteRestsharp ne désérialise pas la réponse

{ 
    "client": { 
    "clientnr":"1", 
    "contact":" Johnny Bravo", 
    "showcontact":"false", 
    "company":"Acme International", 
    "address":"Washington Street 250", 
    "zipcode":"1234567", 
    "city":"SOMECITYNAME", 
    "country":"146", 
    "phone":"0048122123123", 
    "mobile":"myMobileNumber", 
    "email":"[email protected]", 
    "bankcode":"", 
    "biccode":"", 
    "taxnumber":"NL0B01", 
    "tax_shifted":"true", 
    "lastinvoice":"", 
    "sendmethod":"email", 
    "paymentmethod":"bank", 
    "top":"0", 
    "stddiscount":"0", 
    "mailintro":"", 
    "reference": { 
     "line1":"", 
     "line2":null, 
     "line3":null 
    }, 
    "notes":"", 
    "notes_on_invoice":"false", 
    "active":"true", 
    "default_doclang":"en", 
    "default_email":"0", 
    "currency":"EUR", 
    "mandate_id":"", 
    "mandate_date":"", 
    "collecttype":"FRST", 
    "tax_type":"extax", 
    "default_category":"0" 
    } 
} 

Je l'ai utilisé JSON csharp afin de créer des classes

public class Reference 
{ 
    public string line1 { get; set; } 
    public object line2 { get; set; } 
    public object line3 { get; set; } 
} 

public class Client 
{ 
    public string clientnr { get; set; } 
    public string contact { get; set; } 
    public string showcontact { get; set; } 
    public string company { get; set; } 
    public string address { get; set; } 
    public string zipcode { get; set; } 
    public string city { get; set; } 
    public string country { get; set; } 
    public string phone { get; set; } 
    public string mobile { get; set; } 
    public string email { get; set; } 
    public string bankcode { get; set; } 
    public string biccode { get; set; } 
    public string taxnumber { get; set; } 
    public string tax_shifted { get; set; } 
    public string lastinvoice { get; set; } 
    public string sendmethod { get; set; } 
    public string paymentmethod { get; set; } 
    public string top { get; set; } 
    public string stddiscount { get; set; } 
    public string mailintro { get; set; } 
    public Reference reference { get; set; } 
    public string notes { get; set; } 
    public string notes_on_invoice { get; set; } 
    public string active { get; set; } 
    public string default_doclang { get; set; } 
    public string default_email { get; set; } 
    public string currency { get; set; } 
    public string mandate_id { get; set; } 
    public string mandate_date { get; set; } 
    public string collecttype { get; set; } 
    public string tax_type { get; set; } 
    public string default_category { get; set; } 

} 

Cependant, chaque fois que j'appelle API je reçois null (donc désérialisation ne semble travailler). Je l'ai débogué donc j'attraperais quelques erreurs mais le processus se passe bien sans aucune erreur.

Mon code pour les appels suit

var client = new RestClient("https://www.myapi.com/"); 
var request = new RestRequest("api/xyz/something", Method.GET); 
var response2 = client.Execute<Client>(request); 

Y at-il quelque part je fais une erreur?

Répondre

2

C'est parce que votre client:{} est enveloppé dans l'objet JSON. Le plus simple serait d'ajouter un peu d'emballage pour votre classe C# Client, aussi.

public class Container 
{ 
    public Client Client { get; set; } 
} 

... 

var response = client.Execute<Container>(request); 
+0

Hey! J'ai trouvé la réponse à ceci est l'ajout de request.RootElement = "client"; ce qui était le plus facile à faire: D – erPe