J'essaie de renvoyer un fichier JSON à l'aide de l'API Web ASP.NET (pour les tests).
public string[] Get()
{
string[] text = System.IO.File.ReadAllLines(@"c:\data.json");
return text;
}
Dans Fiddler, cela apparaît comme un type Json, mais lorsque je débogue dans Chrome et que je vois l'objet, il apparaît sous la forme d'un tableau de lignes individuelles (à gauche). L'image de droite est à quoi doit ressembler l'objet quand je l'utilise.
Quelqu'un peut-il me dire ce que je dois retourner pour obtenir un résultat Json dans le format correct?
Le fichier contient-il déjà du JSON valide? Si oui, au lieu d'appeler File.ReadAllLines
vous devez appeler File.ReadAllText
et obtenez-le comme une chaîne unique. Ensuite, vous devez l'analyser en JSON afin que l'API Web puisse le re-sérialiser.
public object Get()
{
string allText = System.IO.File.ReadAllText(@"c:\data.json");
object jsonObject = JsonConvert.DeserializeObject(allText);
return jsonObject;
}
Cette volonté:
J'ai trouvé une autre solution qui fonctionne aussi si quelqu'un était intéressé.
public HttpResponseMessage Get()
{
var stream = new FileStream(@"c:\data.json", FileMode.Open);
var result = Request.CreateResponse(HttpStatusCode.OK);
result.Content = new StreamContent(stream);
result.Content.Headers.ContentType = new MediaTypeHeaderValue("application/json");
return result;
}
J'avais besoin de quelque chose de similaire, mais IHttpActionResult ( WebApi2 ) était requis.
public virtual IHttpActionResult Get()
{
var result = new System.Net.Http.HttpResponseMessage(System.Net.HttpStatusCode.OK)
{
Content = new System.Net.Http.ByteArrayContent(System.IO.File.ReadAllBytes(@"c:\temp\some.json"))
};
result.Content.Headers.ContentType = new System.Net.Http.Headers.MediaTypeHeaderValue("application/json");
return ResponseMessage(result);
}