簡體   English   中英

使用ASP.NET Web API返回JSON文件

[英]Return JSON file with ASP.NET Web API

我試圖使用ASP.NET Web API返回一個JSON文件(用於測試)。

public string[] Get()
{
    string[] text = System.IO.File.ReadAllLines(@"c:\data.json");

    return text;
}

在Fiddler中,它確實顯示為Json類型,但是當我在Chrome中調試並查看它出現的對象和各行的數組(左)時。 正確的圖像是我使用它時對象應該是什么樣子。

任何人都可以告訴我應該返回什么以正確的格式獲得Json結果?

ALT

該文件中是否已包含有效的JSON? 如果是這樣,而不是調用File.ReadAllLines你應該調用File.ReadAllText並把它作為一個字符串。 然后,您需要將其解析為JSON,以便Web API可以重新序列化它。

public object Get()
{
    string allText = System.IO.File.ReadAllText(@"c:\data.json");

    object jsonObject = JsonConvert.DeserializeObject(allText);
    return jsonObject;
}

這將:

  1. 以字符串形式讀取文件
  2. 將其作為JSON對象解析為CLR對象
  3. 將其返回到Web API,以便將其格式化為JSON(或XML,或其他)

我找到了另一個解決方案,如果有人有興趣也可以。

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;
}

我需要類似的東西,但需要IHttpActionResultWebApi2 )。

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);
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM