2015-06-25 9 views
5

Używam RestSharp, aby uzyskać dostęp do interfejsu API Rest. Lubię odzyskiwać dane jako POCO. My RestSharp Client wygląda następująco:Json RestSharp dezynfekujący dane odpowiedzi 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; 

moja klasa dla JSONObject wygląda następująco:

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

i JSON odpowiedzi:

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

Odpowiedz

12

Per na documentation tylko RestSharp deserializes do właściwości i używasz pól.

RestSharp wykorzystuje swoją klasę jako punktu początkowego, przelotowego każdego publicznie dostępnym, zapisywalny nieruchomości i szukając odpowiedniego elementu w dane zwrócone.

Musisz zmienić swoją klasę ToDo na następujące kwestie:

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

Dzięki zmieniłem klasę, a teraz to działa: client.AddHandler ("*", nowy JsonDeserializer()); IRestResponse response2 = client.Execute (zapytanie); ToDo td = response2.Data; –

+3

@ThomasKaemmerling Cieszę się, że to słyszę! Jeśli moja odpowiedź ci pomogła, zaakceptowanie byłoby bardzo cenne. http://meta.stackexchange.com/questions/23138/how-to-accept-the-answer-on-stack-overflow –

Powiązane problemy