繁体   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