ASP.NET Web API(テスト用)を使用してJSONファイルを返そうとしています。
public string[] Get()
{
string[] text = System.IO.File.ReadAllLines(@"c:\data.json");
return text;
}
Fiddlerでは、これはJsonタイプとして表示されますが、Chromeでデバッグし、オブジェクトを表示すると、個々の行の配列として表示されます(左)。右の画像は、オブジェクトの外観です。私がそれを使用しているとき。
Jsonの結果を正しい形式で取得するために何を返す必要があるか、誰にも教えてもらえますか?
ファイルには既に有効なJSONが含まれていますか?その場合、File.ReadAllLines
を呼び出す代わりに、File.ReadAllText
を呼び出して、単一の文字列として取得する必要があります。次に、Web APIが再シリアル化できるように、JSONとして解析する必要があります。
public object Get()
{
string allText = System.IO.File.ReadAllText(@"c:\data.json");
object jsonObject = JsonConvert.DeserializeObject(allText);
return jsonObject;
}
この意志:
誰かが興味を持っている場合にも機能する別のソリューションを見つけました。
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;
}
同様のものが必要でしたが、 IHttpActionResult ( WebApi2 )が必要でした。
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);
}