2015-06-25 16 views
5

utilizzo RestSharp per accedere a un'API Rest. Mi piace recuperare i dati come POCO. mio RestSharp client si presenta così:Json RestSharp deserilizing Response Data null

var client = new RestClient(@"http:\\localhost:8080"); 
     var request = new RestRequest("todos/{id}", Method.GET); 
     request.AddUrlSegment("id", "4"); 
     //request.OnBeforeDeserialization = resp => { resp.ContentType = "application/json"; }; 
     //With enabling the next line I get an new empty object of TODO 
     //as Data 
     //client.AddHandler("*", new JsonDeserializer()); 
     IRestResponse<ToDo> response2 = client.Execute<ToDo>(request); 
     ToDo td=new JsonDeserializer().Deserialize<ToDo>(response2); 

     var name = response2.Data.name; 

mia classe per il JsonObject appare così:

public class ToDo 
{ 
    public int id; 
    public string created_at; 
    public string updated_at; 
    public string name; 
} 

e JSON Risposta:

{ 
    "id":4, 
    "created_at":"2015-06-18 09:43:15", 
    "updated_at":"2015-06-18 09:43:15", 
    "name":"Another Random Test" 
} 

risposta

12

Per il documentation, RestSharp deserializza solo alle proprietà e stai usando i campi.

RestSharp utilizza la classe come punto di partenza, loop attraverso ogni pubblicamente accessibile, la proprietà scrivibile e la ricerca di un elemento corrispondente nei dati restituiti.

avete bisogno di cambiare la classe ToDo al seguente:

public class ToDo 
{ 
    public int id { get; set; } 
    public string created_at { get; set; } 
    public string updated_at { get; set; } 
    public string name { get; set; } 
} 
+0

Grazie ho cambiato la classe e ora funziona: client.AddHandler ("*", nuova JsonDeserializer()); IRestResponse response2 = client.Execute (richiesta); ToDo td = response2.Data; –

+3

@ThomasKaemmerling Felice di sentirlo! Se la mia risposta ti aiutasse, accettarla sarebbe molto apprezzata. http://meta.stackexchange.com/questions/23138/how-to-accept-the-answer-on-stack-overflow –

Problemi correlati