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

我正在尝试使用ASP.NET Web API返回一个JSON文件(用于测试)。

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

    return text;
}

在Fiddler中,这看起来像Json类型,但是当我在Chrome中调试并查看它显示的对象时,以及单个行的数组(左)。 正确的图像是当我使用它时对象的外观。

任何人都可以告诉我,我应该返回什么才能以正确的格式实现Json结果?

alt http://i47.tinypic.com/fyd4ww.png


该文件中是否已经有有效的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;
}

这会:

  • 以字符串形式读取文件
  • 将它解析为一个JSON对象到一个CLR对象中
  • 将它返回到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;
    }
    

    我需要类似的东西,但是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:tempsome.json"))
        };
    
        result.Content.Headers.ContentType = new System.Net.Http.Headers.MediaTypeHeaderValue("application/json");
        return ResponseMessage(result);
    }
    
    链接地址: http://www.djcxy.com/p/20429.html

    上一篇: Return JSON file with ASP.NET Web API

    下一篇: WebAPI to Return XML