Je veux recevoir un JSON de mon API REST et traduire en Poços. Il est censé être simple, mais il se révèle être pas :(Flurl: ne peut pas sérialiser chaîne JSON reçu de HttpTest
Dans mon test unitaire j'ai une chaîne de données échantillon JSON que l'API envoie:
string mockJsonResponse = @"[{
""project_name"": ""Mailjet Support"",
""cluster_name"": ""24/7 Support"",
""is_billable"": ""1"",
""usedtime"": ""128""
},
{
""project_name"": ""Caring"",
""cluster_name"": ""Caring"",
""is_billable"": ""0"",
""usedtime"": ""320""
},
{
""project_name"": ""Engagement"",
""cluster_name"": ""Community"",
""is_billable"": ""0"",
""usedtime"": ""8""
}]";
que j'envoie à mon code de la test à travers HttpTest:
httpTest.RespondWithJson(mockJsonResponse);
Je suis en train de le recevoir dans mon code:
dynamic response = "http://api.com".GetJsonListAsync();
Mais il échoue toujours wi th une erreur très générique dans le test Explorer:
Result Message: Flurl.Http.FlurlHttpException : Request to http://api.com failed.
creuser plus il semble que cela ne peut pas sérialiser la chaîne en poco. Je l'ai essayé de faire sérialisation manuelle directement avec la variable de chaîne ci-dessus et il se traduit à ma classe de modèle facilement, donc il ne pouvait pas y avoir un problème de structure du code.
// same string variable above
var jsons = JsonConvert.DeserializeObject<List<Model>>(mockJsonResponse); // this runs fine
Tous ces pas:
dynamic response = await "http://www.api.com".GetJsonAsync();
dynamic response = await "http://www.api.com".GetJsonAsync<Model>();
var response = await "http://www.api.com".GetJsonAsync<Model>();
IList<dynamic> response = await "http://www.api.com".GetJsonListAsync();
La classe modèle:
public class Model
{
public string project_name { get; set; }
public string cluster_name { get; set; }
public string is_billable { get; set; }
public string usedtime { get; set; }
}
Modifier J'ai essayé de l'obtenir sous forme de chaîne avec GetStringAsync
, et il semble que la chaîne a été mutilé en quelque sorte. Cette chaîne passée à JsonConvert.Deserialize<Model>()
échouera le test. C'est ce que montre le débogueur Visual Studio. Il y a beaucoup de personnages d'échappement.