Je possède une classe Model avec une propriété GENERIC dans l'un des WebAPI, alors que lorsque j'appelle la méthode WebAPI Controller via HttpGet, je retourne l'objet, mais je peux ' t capable de DE-sérialiser la réponse JSON. Si j'ai essayé de copier la chaîne JSON dans une variable locale (valeur codée en dur de la réponse) sa DE-sérialisation bien, mais en dynamique son échec. un bon œil les classes du modèleProblème de JsonConvert.DeserializeObject dans WebAPI Résultat de la réponse - C#
Modèle générique Classe:
public class Response<T> {
public T Person { get; set; }
public string Mobile { get; set; }
public string Email { get; set; }
}
employé modèle Classe:
public class Employee {
public string EmpId { get; set; }
public string FirstName { get; set; }
public string LastName { get; set; }
public string OrganizationName { get; set; }
}
public class Celebrity {
public string FirstName { get; set; }
public string LastName { get; set; }
public string Language { get; set; }
}
Je vais avoir une chaîne JSON de type Response<Celebrity>
Considérons la méthode du contrôleur WebAPI
public class PersonController : ApiController {
[HttpGet]
public Response<Celebrity> GetPerson() {
return new Response<Celebrity>()
{
Person = new Celebrity()
{
FirstName = "Emma",
LastName = "Watson",
Language = "English"
},
Mobile = "222123456",
Email = "[email protected]"
};
}
}
Dans l'application console, j'appelle la méthode WebAPI Controller et non la sérialisation DE.
string jsonContent = string.Empty;
var apiResponse = ApiClient.GetAsync("GetPerson").Result;
if (apiResponse.IsSuccessStatusCode) {
jsonContent = apiResponse.Content.ReadAsStringAsync().Result;
Response<Celebrity> person = JsonConvert.DeserializeObject<Response<Celebrity>>(jsonContent);
}
J'ai essayé l'approche suivante
Étape # 1 je copiais la valeur de apiResponse.Content.ReadAsStringAsync().Result
{"Result":{"FirstName":"Emma","LastName":"Watson","Language":"English"},"Mobile":"222123456","Email":"[email protected]"}
Étape # 2 je la valeur hardcode de l'étape 1
string jsonContent = "{\"Result\":{\"FirstName\":\"Emma\",\"LastName\":\"Watson\",\"Language\":\"English\"},\"Mobile\":\"222123456\",\"Email\":\"[email protected]\"}";
Response<Celebrity> person = JsonConvert.DeserializeObject<Response<Celebrity>>(jsonContent);
Son fonctionnement. Je ne sais pas ce que j'ai manqué.
Cependant, je reçois la même question. –
@Mastero recevez-vous une exception ou ne désérialisez-vous pas? –
Non, je ne reçois aucune exception Je reçois une instance par défaut du modèle, rien n'est assigné. –